diff --git a/plans/PROXY_PC_EXEC.md b/plans/PROXY_PC_EXEC.md index 82c8978..f5c113d 100644 --- a/plans/PROXY_PC_EXEC.md +++ b/plans/PROXY_PC_EXEC.md @@ -20,8 +20,10 @@ 建议约束: - `config.proxy-allowlist` 应为 agent 标识列表 +- `allowlist` 仅支持精确匹配,不支持通配、分组或模糊匹配 - 若调用方不在 allowlist 中,应直接拒绝调用 - 默认配置应偏保守;未配置时建议视为不允许任何 agent 调用 +- 一旦调用方 agent 在 allowlist 中,则允许其代理任意 `proxy-for` 值 ### 3. `proxy-pcexec` 与 `pcexec` 的关键区别 `proxy-pcexec` 的功能与 `pcexec` 基本一致,核心差异如下: @@ -44,9 +46,14 @@ ### 权限校验 调用 `proxy-pcexec` 时应至少进行以下校验: -1. 校验调用方 agent 是否在 `config.proxy-allowlist` 中 +1. 校验调用方 agent 是否在 `config.proxy-allowlist` 中(精确匹配) 2. 校验 `proxy-for` 是否存在且非空 -3. 通过校验后,再执行与 `pcexec` 等价的命令执行流程 +3. 不要求 `proxy-for` 必须是已注册或已知 agent-id,可自由填写 +4. 通过校验后,再执行与 `pcexec` 等价的命令执行流程 + +说明: +- allowlist 控制的是“谁可以发起代理执行” +- 只要调用方 agent 在 allowlist 中,就允许其代理任意 agent ### 环境变量注入 - `AGENT_ID` = `proxy-for` @@ -60,11 +67,14 @@ - 通过显式 `proxy-for` 参数,避免隐式身份继承 - 让代理身份切换是显式、可审计、可配置的 -## 待进一步明确的问题 -- `proxy-for` 是否只允许填写已注册/已知的 agent-id -- 审计日志中是否需要同时记录: - - 实际调用者 agent-id - - `proxy-for` 值 - - 最终执行命令 -- `config.proxy-allowlist` 的格式是否需要支持通配、分组或仅支持精确匹配 -- 是否需要对 `proxy-for` 再增加单独 allowlist / 映射限制,避免允许调用者代理任意 agent +## 日志与审计 +建议日志至少记录: +- `executor`(调用方真实 agent-id) +- `proxy-for` +- 最终执行命令 + +## 已明确的设计结论 +- `proxy-for` 可以随意填写,不要求必须是已注册 agent +- 日志需要记录 `executor` 和 `proxy-for` +- `config.proxy-allowlist` 仅支持精确匹配 +- allowlist 中的 agent 可以代理任意 agent,不需要额外的 `proxy-for` 限制