命令环境变量策略
控制子进程继承、排除、显式设置与允许列表,并避免新旧过滤语法冲突。
shell_environment_policy 决定 Codex 启动命令时传入哪些环境变量。它控制子进程环境,不代替沙箱与审批的文件系统和网络边界。
从继承范围开始
inherit = "none" 从空环境开始,inherit = "core" 继承裁剪后的核心环境。用 set 添加明确需要的值,用 filters 控制变量名:
[shell_environment_policy]
inherit = "core"
set = { MY_FLAG = "1" }
ignore_default_excludes = false
[shell_environment_policy.filters]
"AWS_*" = "exclude"
"AZURE_*" = "exclude"模式不区分大小写,支持 * 和 ?。过滤键在配置层之间按不区分大小写的规则合并。
理解应用顺序
- 自动排除名称含
KEY、SECRET或TOKEN的变量(仅启用自动排除时)。 - 执行自定义 exclude。
- 应用
set中的值。 - 应用 include 允许列表。
ignore_default_excludes 默认 true,也就是默认跳过自动敏感名称过滤;设成 false 才启用。set 位于 exclude 之后,所以可以重新引入被排除的变量;最终 include 允许列表仍可移除该值。
使用 include 时的影响
一旦存在值为 "include" 的模式,最终只保留匹配 include 模式的变量。include 不能自行恢复早先已被排除的值。缩小环境后若工具突然无法启动,应检查该工具需要的变量是否被保留。
旧的 exclude 与 include_only 数组仍受支持,但同一配置层不能把任一旧数组与 [shell_environment_policy.filters] 混用,Codex 会拒绝这种组合。