octop v1.0.0 的 shell 命令护栏是内建于 agent 引擎和 connector 网关的行为约束机制,通过 connector.yaml 白名单、arg_pattern 正则校验、docker 上下文隔离实现安全控制,需显式配置且依赖 rbac 权限与 loop-enabled 模式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Octop v1.0.0 的 Shell 命令护栏(Shell Command Guard)不是默认开启的独立开关,而是一套内建在 Agent 执行引擎 和 Connector 安全网关 中的行为约束机制。它的作用是防止 AI 误执行高危命令(如 rm -rf /、shutdown、chmod 777 等),同时允许受信命令在可控范围内运行——关键在于“配置信任边界”,而非简单开/关。
Shell 命令护栏的核心配置方式
-
通过
connector.yaml限制可执行命令白名单
在 Octop 部署目录的config/connectors/下编辑对应 Shell Connector 的配置文件(如shell-local.yaml),添加或修改allowed_commands字段:allowed_commands: - "ls" - "cat" - "grep" - "ps aux | grep" - "systemctl status"
不在列表中的命令会被直接拦截,并返回提示:“该命令未被授权执行”。
-
启用命令参数校验规则(正则过滤)
可为每个白名单命令附加arg_pattern,例如禁止rm删除根目录或隐藏文件:- name: "rm" arg_pattern: "^-f?\s+[^/].*$" # 只允许删除非绝对路径下的文件
设置执行上下文隔离(推荐搭配 Docker 后端)
若你使用docker作为可插拔后端(见backend.yaml),Shell 命令实际运行在轻量容器中,天然具备文件系统与进程空间隔离。此时即使命令未被白名单覆盖,也无法影响宿主机。-
关闭护栏需显式声明(不建议)
若确需临时放开(如调试场景),可在对应 Connector 配置中设:security: disable_command_guard: true
但该字段必须由管理员手动写入,且启动时会输出 WARN 日志提醒。
实际生效前提
- Shell Connector 必须已启用并绑定到当前工作区(Workspace)
- 用户角色需具备
execute_shell权限(多用户模式下由 RBAC 控制) - Agent 引擎处于
loop-enabled模式(v1.0.0 默认开启),否则任务不会进入带护栏的执行链路
这套机制不依赖外部沙箱工具,全部由 Octop 自研的 harness-exec 模块实现,兼顾安全性与可审计性——每次 Shell 调用都会记录命令原文、执行者、时间戳、是否拦截及拦截原因,日志存于 logs/connector-shell/。











