Codex 完全访问权限、实验警告与 475K 上下文窗口

太阳作者太阳
原创内容采用 CC-4.0 协议发布,转载请注明出处

我把 Codex 从工作区沙箱改成了完全访问。改完又看到一条实验功能警告,加上界面的上下文窗口显示为 475K,一时没弄清它们有没有关系。

查过配置才发现,权限已经生效,警告来自仍在开发中的 local_thread_store_compression。至于 475K,本机模型缓存给出的数值刚好是 500000 × 95%。

这次使用的是 Windows 和 PowerShell,CLI 版本为 codex-cli 0.162.1,模型是 gpt-6.1-sol。下面的输出记录于 2026 年 10 月 15 日。

我这次实际采用的设置

个人配置文件在 Windows 用户目录下:

C:\Users\<用户名>\.codex\config.toml

我改动的几项配置如下。合并到自己的文件时,修改已有键即可,保留原来的其他设置;如果已经有 [features],就在原段里修改。

model = "gpt-6.1-sol"
sandbox_mode = "danger-full-access"
approval_policy = "never"

[features]
local_thread_store_compression = true

上下文相关的 model_context_window 和 model_auto_compact_token_limit 都没手动填写。实验功能也保留开启。

从工作区沙箱改成完全访问

调整前,配置里的沙箱模式是:

sandbox_mode = "workspace-write"

这次改为:

sandbox_mode = "danger-full-access"
approval_policy = "never"

按照 Codex 官方配置参考,sandbox_mode 控制沙箱模式,approval_policy 控制何时请求审批。这里的组合用于取消 Codex 沙箱限制,并关闭工具执行的审批请求。

改完后,命令可以操作工作区之外的文件。我是在自己管理的本机上使用这组配置,Windows 自身的文件权限仍然有效,Codex 也不会因此获得管理员权限。

如果只想在一次 CLI 启动中使用,可以显式传入:

codex --sandbox danger-full-access --ask-for-approval never

配置保存后,我又确认了一次会话权限:最初还是工作区写入模式,切换后才显示 danger-full-access,文件系统状态为 unrestricted。已有会话不一定立即加载新设置,改完需要重启或在客户端切换权限。

启动时的实验功能警告

我看到的启动提示包含:

Under-development features enabled: local_thread_store_compression.

这条提示说的是启用了开发中的功能。用下面的命令可以查看它在当前版本里的状态:

codex features list

我本机的对应项是:

local_thread_store_compression           under development  true

末尾的 true 表示已开启,under development 表示仍在开发中。我看到的是启动提醒,没有遇到由这个开关导致的运行报错;至于稳定性,单凭这次使用还判断不了。

隐藏警告和关闭功能分别怎么设置

下面这个键控制是否隐藏实验功能警告:

suppress_unstable_features_warning = true

Codex 官方配置参考说明,true 会隐藏实验功能警告,false 则保留提示。这个设置只控制提醒,功能仍会继续运行。文档没有提供只屏蔽某个实验功能警告的参数。

这个键要放在文件顶层、所有 [features]、[tui] 等配置段之前。直接追加在 [features] 后面,会被 TOML 当成该段的设置。

如果目的是关闭这个功能,则应修改已有 [features] 中的对应行:

[features]
local_thread_store_compression = false

我这次保留了 local_thread_store_compression = true。官方配置参考没有详细解释它的内部行为,目前也没有依据把它当作扩大上下文或节省 token 的开关。

为什么界面显示的是 475K

我是在看到 Tibo 关于 Codex 上下文调整的推文后留意到这个数值的。原帖访问返回 HTTP 403,没能读取正文,不过本机的模型缓存可以直接查。

在 PowerShell 中读取 models_cache.json,只提取当前模型的窗口字段:

$catalog = Get-Content "$env:USERPROFILE/.codex/models_cache.json" -Raw |
  ConvertFrom-Json

$catalog.models |
  Where-Object { $_.slug -eq 'gpt-6.1-sol' } |
  Select-Object slug, context_window, effective_context_window_percent |
  ConvertTo-Json

本次结果是:

{
  "slug": "gpt-6.1-sol",
  "context_window": 500000,
  "effective_context_window_percent": 95
}

这两个值与界面的 475K 正好对应:

500000 × 95% = 475000 tokens = 475K

界面的 475K 正好对应这份配置,没必要为了让它显示成 500K 再手动调大窗口。475K 是窗口额度,对话实际还剩多少空间,要扣除已经使用的部分。

这里查到的是本地模型元数据,我没有用超长输入测试服务端上限。其他账号收到的配置可能不同,可以用同一条命令核对自己的数值,缓存文件不用修改。

上下文窗口和自动压缩阈值要分开看

Codex 官方配置参考分别列出了两个键:

  • model_context_window:当前模型可用的上下文窗口 token 数。
  • model_auto_compact_token_limit:触发对话历史自动压缩的 token 阈值,未设置时使用模型默认值。

自动压缩阈值决定什么时候整理历史。把阈值或窗口数值写大,服务端也未必接受那么长的输入。

这次我继续用模型默认值。以后窗口显示再变,先查当前模型和缓存里的数值,有手动覆盖的配置再一起检查。安装、登录和状态栏的设置,另记在《Codex CLI 使用笔记》中。