Skip to content

Cell - Ta Permission Gate ​

一个 pi 包:按规则对工具调用放行、询问或拒绝。不依赖 Cell,Ta 和 pi 都能安装:

bash
ta install npm:@celljs/ta-permission-gate
pi install npm:@celljs/ta-permission-gate

规则写在 permissions.json,全局(agent 目录下)和项目(.ta/ 或 .pi/ 下)各一份:

json
{
  "default": "allow",
  "rules": [
    { "tool": "bash", "command": "git push*", "action": "ask" },
    { "tool": "bash", "command": "*rm -rf*", "action": "deny" },
    { "path": "*/.env*", "action": "deny" }
  ]
}
  • 每份文件里第一条匹配的规则生效,都不匹配时取 default(默认 allow);* 匹配任意字符,其余按字面。
  • 两份文件取更严的结果:项目只能收紧、不能放宽,否则不受信任的仓库能给自己开权限。
  • ask 调用 ctx.ui.confirm,5 分钟无人回答视为拒绝;没有界面(-p)时直接拒绝。在 ta serve 下对话框会发给所有已连接的客户端。
  • 文件读不了或格式不对时一律拒绝。

没有 permissions.json 时什么都不限制,与 pi 的默认行为一致。