授权
三个回答、一次批准覆盖谁、怎么撤销。
授权窗
一个程序请求一把它还没被批准过的 key 时,KeyKeeper 只弹一个窗,自上而下:
- 谁想用什么——调用方的真实图标和名字、KeyKeeper 对它身份有多确定、要用的字段。
- 它说了什么——调用方自己写的一句话(标着「未核实」),以及它准备运行的命令。
- KeyKeeper 怎么看——按 key 创建时声明的用途做一次离线规则检查;可选地再加一个第二模型的意见(见下)。
- 三个回答。推荐的那个高亮。
三个回答
| 回答 | 有效期 | 适合 |
|---|---|---|
| 仅这一次 | 这一次运行;每个字段只给一次。 | 一次调用。 |
| 这次运行期间 | 到发起请求的程序退出(一个终端会话,或 Agent 的进程)。 | 同一个 Agent 做同一件事。 |
| 以后都不问 | 直到你撤销。 | 无人值守的脚本。 |
没有「1 小时」:它回答的是一个没人问的问题。「这次运行期间」绑的是进程本身——pid 加启动时间——pid 被复用也继承不到。
一次批准覆盖谁
批准给的是发起请求的那个程序,身份从连接上测出来,不是它自称的名字:
- 有签名的 App(Developer ID)按团队和 bundle 认;批准覆盖这个 App 以及它运行的代码(比如扩展)。
- 没签名的 App 或工具按它运行的文件认;从同一个文件启动的都算它。
- 经
keykeeper命令进来的调用方(Codex、Claude Code、脚本)按启动它的 App 或文件认,所以「以后都不问」覆盖在它里面启动的一切。 - KeyKeeper 认不出来的调用方只能「仅这一次」,什么都不记住。
窗口按钮下面一行字会说明是哪一种。
后台可用的 key
凭据有「每次询问」和「后台可用」两档。后台可用也不是随便拿:新安装默认强制后台审批,每个新调用方先给你看一次, 之后就能无人值守地用。设置 → 后台读取可以关掉。
声明用途与夸大的请求
Agent 新建 key 时要声明用途:做什么、预期由谁调用、多久用一次(一次性、偶尔、定时)、是否必须无人值守。之后的每次请求 都会对照这份声明。一次性的用途却要后台运行、从没声明过「重复且无人值守」却要「始终」——都会在窗口里被点名为夸大,推荐的回答会往下退。
独立审查员
可选:再让一个模型——任何 Anthropic 或 OpenAI 风格的接口,key 粘进设置即可——读一遍请求(名字、写的理由、命令、声明用途; 永远不含值),加一行意见:必要性 1–5、范围是否已是最小、一句话。它只给意见,从不批准。
撤销
每条授权都列在那把 key 的页面和菜单栏里:给了谁、什么、多久。在那里撤销,或用 keykeeper grants list / keykeeper grants revoke <id>。
授权存在一个只有 KeyKeeper 能写的钥匙串条目里。
改 key 的名字或备注从不弹窗——那是给人和 Agent 看的备注。正因如此,窗口标题旁边永远显示 key 不可改的 ID。