codex默认只允许访问当前工作目录及子目录,跨目录、绝对路径、符号链接或网络驱动器上的文件一律被拦截;需通过--root参数、修改config.toml的allowed_roots或临时--no-sandbox解除限制,但后者仅限可信环境。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Codex安装后无法读取项目文件,不是权限设置太松就是沙箱限制太死——它默认只允许访问当前工作目录及子目录,跨目录、绝对路径、符号链接或网络驱动器上的文件一律被拦截,哪怕你用管理员身份运行也无效。
确认Codex当前运行的沙箱根目录
打开终端,进入你的项目目录(比如D:\myproject),执行:
codex --debug list-files
观察输出中第一行是否显示类似Root directory: D:\myproject。如果不是,说明Codex没在你期望的目录启动,它只会扫描自己认定的“根目录”下的文件。
这一步必须做。Codex不继承CMD/PowerShell的当前路径,而是按启动时所在目录或配置指定路径来锁定沙箱边界。
解除沙箱限制的三种方法
方法一:用--root参数显式指定可读范围
在项目根目录下运行:codex --root "D:\myproject" read README.md
注意:路径必须是完整绝对路径,不能用..或~;若路径含空格,必须用英文双引号包裹。【路径错误会导致直接报错退出,不会降级尝试】
方法二:修改config.toml永久放宽限制
找到.codex/config.toml(通常位于用户主目录),在[sandbox]段落下添加:
allowed_roots = ["D:\myproject", "C:\shared\docs"]
Windows路径需用双反斜杠转义;每项必须是完整绝对路径;改完保存,重启Codex进程才生效。
方法三:临时关闭沙箱(仅限可信本地环境)
执行:codex --no-sandbox read sensitive.txt
⚠️ 此模式下Codex将获得与当前终端进程同等的文件系统权限,能读写任意路径。切勿在处理远程代码或未审核脚本时启用。
排查真实读取失败原因
第一步:检查文件是否存在且路径拼写准确
在终端中直接执行:dir "D:\myproject\src\main.py"(Windows)或ls -l /Users/name/project/src/main.py(macOS/Linux)
如果系统提示“找不到文件”,Codex当然读不了——别跳过这步,70%的“无法读取”其实是路径输错、大小写不符或文件被隐藏。
第二步:验证Codex是否拥有该文件的NTFS/POSIX权限
右键文件→属性→安全(Windows)或ls -l filename(macOS/Linux),确认当前用户有读取权限。
特别注意:若文件在OneDrive、Google Drive同步盘内,某些版本Codex会因云文件占位符机制返回空内容而非报错。
第三步:检查是否被杀毒软件拦截
临时禁用Windows Defender实时保护,或Mac上检查“安全性与隐私→完整性保护”是否阻止了Codex访问。部分国产杀软会静默拦截CLI工具对非标准目录的访问请求,不弹窗也不报错。
第四步:确认文件编码是否为UTF-8无BOM
Codex默认以UTF-8解析文本文件。若文件用GBK、Big5或UTF-8+BOM保存,可能触发解码失败并静默跳过。用VS Code打开文件→右下角查看编码→点击切换为“UTF-8”→保存。











