Windows 沙箱默认进专用桌面,看不见窗口再关
elevated 和 unelevated 都默认 sandbox_private_desktop = true。沙箱 GUI 和 Computer Use 枚举不到交互桌面时才改 false,然后彻底退出 ChatGPT / Codex。
原生 Windows 沙箱把最终的子进程放到专用桌面,不跟你的交互桌面 Winsta0\Default 共用。elevated 和 unelevated 都这样。源码缺省是 true,config.toml 样例经常不写这个键,看起来像「没配」。
[windows]
sandbox = "elevated"
# 默认就是 true,不必写。只有要兼容旧行为才关:
# sandbox_private_desktop = false
专用桌面名字类似 Winsta0\CodexSandboxDesktop-...。沙箱里启动的记事本、安装向导你看不到、截不到,这是 UI 隔离,不是沙箱坏了。不要为了让窗口弹到你面前就把键关掉。
该关的情况:Computer Use 的 list_windows / EnumWindows 找到 0 个窗口,或必须跑在交互桌面的旧工具。这时才写:
[windows]
sandbox = "elevated"
sandbox_private_desktop = false
写进 %USERPROFILE%\.codex\config.toml。改完退出所有 ChatGPT.exe 和 Codex 进程再开;只新开会话不够,专用桌面和管道是桌面应用进程建的。关了以后文件系统和防火墙边界还在,只是放弃同一桌面的窗口隔离。
这修不了 OpenSSH Session 0 里 elevated 引导失败。引导进程还没起来时,改这个键没用。企业要钉死,写云托管 requirements.toml 的 [windows] sandbox_private_desktop,不是只写用户 config。allowed_sandbox_implementations 只管 elevated / unelevated,不管桌面。