Skip to content
FunCoding

Search

Search docs, Skills and MCP

命令环境变量策略

控制子进程继承、排除、显式设置与允许列表,并避免新旧过滤语法冲突。

This page has not been translated into English yet. The original Chinese version is shown below.

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"

模式不区分大小写,支持 * 和 ?。过滤键在配置层之间按不区分大小写的规则合并。

理解应用顺序

  1. 自动排除名称含 KEY、SECRET 或 TOKEN 的变量(仅启用自动排除时)。
  2. 执行自定义 exclude。
  3. 应用 set 中的值。
  4. 应用 include 允许列表。

ignore_default_excludes 默认 true,也就是默认跳过自动敏感名称过滤;设成 false 才启用。set 位于 exclude 之后,所以可以重新引入被排除的变量;最终 include 允许列表仍可移除该值。

使用 include 时的影响

一旦存在值为 "include" 的模式,最终只保留匹配 include 模式的变量。include 不能自行恢复早先已被排除的值。缩小环境后若工具突然无法启动,应检查该工具需要的变量是否被保留。

旧的 exclude 与 include_only 数组仍受支持,但同一配置层不能把任一旧数组与 [shell_environment_policy.filters] 混用,Codex 会拒绝这种组合。