Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Baton

Baton 是挂在 PATH 最前面的轻量审批闸门:AI coding agent 执行高风险命令时,先用 macOS 原生对话框向你确认。

它适合给 Emdash、claudexor、Conductor 以及直接运行的 Codex、Claude Code 等工具加一层“防手滑、防失控”保护。它不是安全沙箱,也不用于抵抗主动绕过闸门的恶意程序。

要求

  • macOS
  • Node.js 20+
  • pnpm

安装

git clone https://github.com/yangjinmin666/baton.git
cd baton
pnpm install
pnpm build
npm link
baton install

baton install 会生成 ~/.baton/shims/,并打印这一行:

export PATH="$HOME/.baton/shims:$PATH"

把它加入 ~/.zprofile,完全退出并重开 Emdash 和终端后检查:

baton status

status 应显示“闸门目录已位于最前面”。

安装命令还会注册一个当前用户专属的 macOS LaunchAgent。L0/L1 仍由 shim 直接透传;L2/L3 才通过权限为 0600 的本地 Unix socket 请求这个小型审批服务。这样即使 agent 自带沙箱不允许写 ~/.baton,原生弹窗与追加式审计仍由沙箱外的用户进程可靠完成。审批服务不可用时,高风险命令一律拒绝。

三种用法

直接运行 agent:

codex exec "修复登录失败的问题"

在 Emdash 中使用:把上面的 PATH 行加入登录 shell 配置,完全退出并重新打开 Emdash。Emdash 仍按原方式发现 agent CLI;agent 启动的 gitnpmrm 等同名命令会先经过 Baton。

查看审批历史:

baton log
baton log --json

会拦什么

Baton 为以下命令安装同名 shim:

git gh npm pnpm yarn npx curl wget docker ssh scp rsync sudo rm
  • L0/L1 静默放行:git status/diff/log/add/commit、测试、构建、按 lockfile 安装已有依赖等。
  • L2 弹窗:git push、创建 PR、安装新包、外网 curl/wget、改 CI、碰 .env 或密钥文件等。
  • L3 弹窗且只能允许一次:rm -rf、强推、删分支、改写历史、sudodocker pushnpm publish、远程 ssh/scp/rsync、修改 ~/.baton 等。

L2 对话框可选择“允许一次”“30 分钟内同类允许”或“拒绝”。同类授权按完整动作签名匹配,不会把 npm add zod 扩大成 npm:*。L3 的批量授权在代码层被禁用。

弹窗等待 5 分钟会自动拒绝。没有图形界面、osascript 失败或日志无法落盘时,同样拒绝并返回退出码 1。L2/L3 的请求与决策会以 JSONL 追加到 ~/.baton/audit/;显示和落盘前会脱敏常见 token 与私钥。

明确边界

Baton 只拦截通过 PATH 按名字查找的命令调用。它拦不住:

  • 绝对路径调用,例如 /usr/bin/git push
  • agent 自己写代码,用原始 socket 直接联网;
  • agent 直接调用系统 API,不经过这些命令行工具;
  • agent 主动修改自己的 PATH,避开 ~/.baton/shims

因此 Baton 是低打扰的操作确认层,不提供文件隔离、网络隔离或对抗性安全保证。需要抵抗恶意代码时,应继续使用厂商沙箱、容器或 OS 级隔离。

管理

baton status       # 安装状态、拦截命令、最近审批
baton log          # 完整审批历史
baton uninstall    # 移除 shims,保留审批历史

卸载后还需从 shell 配置中删除 PATH 行。

开发验证

pnpm test
pnpm build

License

MIT

About

A lightweight macOS approval gate for AI coding agents

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages