pstack 的安全实践:为什么 Agent 子进程不该继承整个环境变量 pstack 的安全实践为什么 Agent 子进程不该继承整个环境变量【免费下载链接】pstack-claudeClaude Code, Codex, Copilot, Pi, OpenCode, Gemini, and Prime Agent versions of Potetos pstack. Rigorous agent workflows with Cursor primitives translated for other harnesses.项目地址: https://gitcode.com/GitHub_Trending/ps/pstack-claudepstack 是面向 Claude Code、Codex、Copilot 和 Pi 等 AI 编程助手的严谨 Agent 工作流插件。它的一个容易被忽略的安全细节是启动子进程时刻意不把整个环境变量原样交给子进程——因为你的 shell 里通常躺着 API Key、Token 等凭据少传一个变量就少一分泄密面。先看风险环境变量是隐形行李箱在终端里环境变量会像行李箱一样被整箱搬运给所有子进程。里面除了PATH这类无害内容往往还有️ 各家大模型的 API Key如ANTHROPIC_API_KEY 版本平台的访问 Token如GH_TOKEN 指向私有配置目录的路径变量对 AI Agent 来说风险被放大Agent 会自动运行命令、派生子 Agent。如果每个子进程都默认拿到完整行李箱一旦某个子命令把环境打印出来env、调试日志凭据就可能进入 Agent 的上下文甚至被写进提交记录。pstack 的安全范围声明里也明确把让 Agent 泄密或执行用户未授权的命令视为漏洞范畴见 SECURITY.md。实践一跨进程传值走命令行参数不走环境变量pstack 的 Pi 扩展要启动子 Agent 时需要告诉子 Agent你是第几层用于限制 Agent 嵌套深度。早期版本的做法是复制一份完整环境变量、塞进一个PSTACK_PI_DEPTH变量再交给子进程——这是插件里最后一处向子进程递出整包环境的位置。新版本的做法更干净子进程原样继承平台默认环境深度值改用--pstack-depth命令行标志传递。父进程没有多复制一份环境子进程也没有偷偷多装一个变量深度限制和行为完全不变。相关改动记录见 CHANGES.md。这个原则值得记下来能用参数说清楚的事不要靠环境变量捎带。实践二测试子进程只拿 PATH 和必需变量看 pstack 的测试代码会更直观。测试里启动的子进程一律只给最小环境例如 tests/pre-tool-use.test.mjs 中子进程环境只有PATH加上测试显式设置的变量又如 orch.test.ts 中子进程只拿到PATH和一个测试专用的存储目录变量。这样做有两个好处凭据不流入测试子进程即使测试失败打印了环境也不会带上你的 API Key结果可复现测试行为不受你本地 shell 配置比如颜色、代理变量影响。配套地插件目录曾把$PWD当作凭据类变量名处理过——因为插件市场的安全校验会把指向远程仓库的凭据类变量视为风险。pstack 索性在仓库里彻底避开了这类写法见 CHANGES.md连被误伤的机会都消除了。实践三Pi 子 Agent 不继承父级的敏感命令行标志pstack 在 Pi 上运行子 Agent 时每个子 Agent 是独立的pi --mode rpc进程由 plugins/pstack/pi/child.ts 管理其生命周期。值得注意的是子进程不会继承父进程的一次性命令行标志例如-e扩展加载、--api-key内联密钥等。也就是说如果你只是临时用--api-key启动了父会话子 Agent 不会把这个密钥继承走子 Agent 只读取磁盘上自己保存的包和配置。密钥停留在该出现的进程里不会顺着进程树层层扩散。这条设计说明记录在 pi-tools.md。小结三条可以直接抄走的经验经验pstack 的做法适用场景参数传值优先深度值走--pstack-depth标志不再复制整包环境自研插件、CLI 工具最小化子进程环境测试子进程只给PATH 显式变量任何会启动子进程的代码敏感标志不下传子 Agent 不继承--api-key等一次性标志多进程架构核心思想一句话子进程该知道什么就精确给什么宁可显式不要顺手全继承。对于正在写 AI Agent 工具或自动化脚本的新手来说这比任何一行代码都重要——你的环境变量里装着钥匙别把它挂在每个子进程的门口。更多背景可参考 docs/reference.md 与 CHANGES.md 中关于凭据处理的完整演进记录。【免费下载链接】pstack-claudeClaude Code, Codex, Copilot, Pi, OpenCode, Gemini, and Prime Agent versions of Potetos pstack. Rigorous agent workflows with Cursor primitives translated for other harnesses.项目地址: https://gitcode.com/GitHub_Trending/ps/pstack-claude创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考