05 · 权限、沙箱与安全边界:压低错误的上限
结论:四层缺一不可——权限档、审批策略、执行策略(execpolicy Starlark + Guardian)、沙箱(三平台);Claude Code 六步 deny 高于一切;PocketOS 五环里三环在基础设施。
%%{init: {"flowchart": {"wrappingWidth": 180}}}%%
flowchart LR
CALL["模型返回一个工具调用<br/>shell: rm -rf ./build · write: src/x.py · http: DELETE /volumes/7"] --> L1{"① 权限档<br/>这个会话能碰什么?"}
L1 -->|"超出档位:写只读区、访问网络"| DENY1["拒绝(不问人)"]
L1 -->|"在档位内"| L2{"② 审批策略 + ③ 执行策略<br/>这类动作要问人吗?"}
L2 -->|"forbidden"| DENY2["拒绝"]
L2 -->|"prompt / 需审批"| ASK["挂起,请求人批准(第三篇)<br/>可选:Guardian 模型先审"]
ASK -->|"拒绝"| DENY3["拒绝,结果送回模型"]
ASK -->|"批准"| SB
L2 -->|"allow / 自动"| SB["④ 沙箱<br/>在受限的文件系统 / 网络 / 进程里执行"]
SB -->|"被沙箱拦住"| ESC{"允许升级?"}
ESC -->|"never / on-request:不"| DENY4["返回沙箱拒绝说明"]
ESC -->|"是:新审批"| ASK
SB -->|"成功"| OUT["结果写回(不可信输入)"]
classDef step fill:#fff7e0,stroke:#c98a00,stroke-width:2px,color:#222
classDef dec fill:#eef6ff,stroke:#5b8fd6,color:#222
classDef deny fill:#fdecea,stroke:#c0392b,color:#222
class CALL,ASK,SB,OUT step
class L1,L2,ESC dec
class DENY1,DENY2,DENY3,DENY4 deny
COMMENTS
评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。