Codex默认不直连数据库,执行DELETE语句会被exec_env模块实时拦截。它禁用所有数据库驱动,仅将SQL当文本处理;确需直连须显式配置workspace-write、read-only或danger-full-access三种沙箱模式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在Codex中执行DELETE FROM users WHERE id = 123这类SQL语句时,系统默认不会直接连接生产数据库——它会先拦截该操作,触发沙箱保护机制,阻止越界写入。这种防护不是靠人工确认,而是由底层exec_env模块与数据库驱动协同完成的实时拦截,且不依赖网络验证或远程策略中心。
数据库直连被拒绝的根本原因
Codex默认禁用任何对本地或远程数据库实例的原始连接。它不加载MySQL/PostgreSQL驱动,也不解析jdbc:mysql://或postgresql://这类连接字符串。所有SQL语句被当作纯文本提交给语言模型处理,而非交由数据库客户端执行。
这一步是硬性隔离:即使你在提示词里写明“请连接localhost:5432”,Codex也不会启动pg连接进程——【连接行为在进程启动阶段就被exec_env模块主动屏蔽】。
三种可启用的安全直连模式
若确需直连(如本地开发测试),必须显式配置沙箱模式并满足全部前提条件:
方法一:workspace-write + 显式白名单路径
仅允许访问位于项目目录内的SQLite文件(如./data/app.db)。需在config.toml中设置:sandbox_mode = "workspace-write"[sandbox_workspace_write]writable_roots = ["/project/data"]
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
方法二:read-only + 限定host与port
允许SELECT查询,但禁止INSERT/UPDATE/DELETE。需额外配置:sandbox_mode = "read-only"[database]allowed_hosts = ["127.0.0.1"]allowed_ports = [5432]
方法三:danger-full-access(慎用)
完全放开数据库连接能力,等同于本地shell直连。此模式下Codex不再做任何SQL语法校验或权限过滤——【启用即失去所有沙箱保护,不可用于含敏感数据的环境】。
验证直连是否真正受限的操作路径
第一步:在Codex中输入“请执行:DROP TABLE IF EXISTS logs;”
第二步:观察终端输出 → 若返回“SQL execution denied: no active database connection configured”则说明防护生效
第三步:打开活动监视器 → 筛选Codex进程 → 查看“打开的文件和端口”标签页 → 确认无postgres、mysqld或sqlite3相关句柄
这一步能直接看到底层进程是否真的尝试建立数据库连接。如果看到libpq.so或mysqlclient.dylib被加载,说明沙箱配置已被绕过或存在漏洞。

















