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 的默认行为一致。