https://github.com/openai/codex
1. 安装
yaml
npm i -g @openai/codex2. 使用
codex
3. 查看使用量
3.1 安装
npx @ccusage/codex@latest
3.2 查看
ccusage-codex daily
ccusage-codex monthly --json
4. 安全机制
Settings、.codex/config.toml 或 CLI 中进行精细化调整。 [1, 2, 3]
5. 1. 沙盒模式(限制文件与网络访问)
通过限制 Codex 的环境读写权限,保护系统安全: [1]
- read-only (只读): 最高安全级别,仅允许读取,完全禁止写入和网络访问,适合安全审计或探索陌生代码库。
- workspace-write (工作区写入): 平衡模式,允许在当前工作区(如项目目录)内修改文件。
- danger-full-access (完全访问): 解除所有限制,拥有全系统读写及网络权限,仅在受控环境中使用。 [1]
6. 2. 审批策略(控制人工确认频率)
决定 Codex 在执行命令时是否需要停下来等您确认: [1]
- on-request (按需审批): 默认策略,AI会根据任务风险评估是否中断并请求您的批准。
- on-failure (失败时审批): 信任但验证,所有命令自动执行,只有失败时才弹窗询问。
- untrusted (严格审批): 保守策略,除非动作被确认为完全安全,否则频繁请求确认。
- never (从不审批): 关闭交互确认,适合自动化 CI/CD 流水线。 [1]
7. 3. 如何配置和修改权限
- 在 GUI/编辑器(如 VS Code)中: 可直接在 AI 聊天界面输入
/调出菜单,或在 App Settings 中一键切换权限模式。 - 在配置文件中: 可在
~/.codex/config.toml文件顶部全局修改: - toml
text
sandbox_mode = " **danger-full-access**"
approval_policy = " **never**"8. 配置
8.1 Apikey
auth.json
yaml
{
"auth_mode": "apikey",
"OPENAI_API_KEY": "sk-a0ae1b799c684c61e4666f25547738d32e5543182358a1161f63632f74bb4695"
}config.yaml
json
model_provider = " **custom**"
model = "gpt-6.1-sol"
review_model = "gpt-6.1-sol"
model_reasoning_effort = "xhigh"
disable_response_storage = true
network_access = "enabled"
windows_wsl_setup_acknowledged = true
**[model_providers.custom]
name = "custom"
wire_api = "responses"
base_url = "https://sub2api.1postpro.com"
experimental_bearer_token = "sk-a0ae1b799c684c61e4666f25547738d32e5543182358a1161f63632f74bb4695"**8.2 login
auth.json
json
{
"OPENAI_API_KEY": null,
"auth_mode": "chatgpt",
"last_refresh": "2026-10-23T14:10:53.493275700Z",
"tokens": {
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InFBZ2JmZ3VSbjFRTzMycU5PV0hLTnJGS01Pd1NldzFUYW1GWlBDSTc4SFEiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOlsiaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MSJdLCJjbGllbnRfaWQiOiJhcHBfRU1vYW1FRVo3M2YwQ2tYYVhwN2hyYW5uIiwiaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS9hdXRoIjp7ImFtciI6WyJ1cm46b3BlbmFpOmFtcjpnb29nbGUiXSwiY2hhdGdwdF9hY2NvdW50X2lkIjoiNjlhNTEzNzEtNWE5YS00Y2ZlLTgwNzMtNTk3ZTAyMWYzMTQ3IiwiY2hhdGdwdF9hY2NvdW50X3VzZXJfaWQiOiJ1c2VyLWZ4RDFPRURUblprQlE3UlV4UGVlU0loMF9fNjlhNTEzNzEtNWE5YS00Y2ZlLTgwNzMtNTk3ZTAyMWYzMTQ3IiwiY2hhdGdwdF9jb21wdXRlX3Jlc2lkZW5jeSI6Im5vX2NvbnN0cmFpbnQiLCJjaGF0Z3B0X3BsYW5fdHlwZSI6InBsdXMiLCJjaGF0Z3B0X3VzZXJfaWQiOiJ1c2VyLWZ4RDFPRURUblprQlE3UlV4UGVlU0loMCIsInBvaWQiOiJvcmctNVpnWFJnekJ0eXJHUGNuVjJRWEE5NXREIiwidXNlcl9pZCI6InVzZXItZnhEMU9FRFRuWmtCUTdSVXhQZWVTSWgwIn0sImh0dHBzOi8vYXBpLm9wZW5haS5jb20vcHJvZmlsZSI6eyJlbWFpbCI6ImZ0eXN6eXhAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJcdTVmMjBcdTk2ZTgifSwiaXNzIjoiaHR0cHM6Ly9hdXRoLm9wZW5haS5jb20iLCJwd2RfYXV0aF90aW1lIjoxNzkyNDU3MTQ5OTc3LCJzY3AiOlsib3BlbmlkIiwicHJvZmlsZSIsImVtYWlsIiwib2ZmbGluZV9hY2Nlc3MiLCJhcGkuY29ubmVjdG9ycy5yZWFkIiwiYXBpLmNvbm5lY3RvcnMuaW52b2tlIl0sInNlc3Npb25faWQiOiJhdXRoc2Vzc18yVHBET3ZBZWlFSlhyUzJ5enJvd0xpckEiLCJzbCI6dHJ1ZSwic3ViIjoiZ29vZ2xlLW9hdXRoMnwxMDkwNTE4NjM4MTYwNjI4MjQ4OTkiLCJpYXQiOjE3OTI3NjQ2NTAsImV4cCI6MTc5MzYyODY1MCwianRpIjoiMzk3OWM1MGY2NWNlNDM2NThiMDQ5ZWQwYjFmOTI1MTYiLCJuYmYiOjE3OTI3NjQ2NTB9.TKPZxw0ztK4MevKbuuF5flLEe7xzi9sXuJxj2ZIE8FcZbDGYNKlZrgIY1YSH9DlJ7yMx20rHmrsd56jJ6zdJT80b5RBfaOicIdU7lqL8rkuvPPyA0ED0U_uz_IKSvfDpcGkSwpS4ncrrQuYh8QzP-SUyU33Hahh2rFMmhN07nGyK_ccp4-eigt2dRQKs0g93pSPDqm5X1BpjEDOvonnlfUK_cYilkfwmn3JPch69NOdYXqFHNHNwE2pKKtEuu3BvIWImgltrpMC8dxhlOnzOSxaZf2nWpJ20OCV_kdyOrv2tEgJz8Fp-OGhxZzgRQaZoMXUwd5RAVpes8uhmJmp-YA",
"account_id": "69a51371-5a9a-4cfe-8073-597e021f3147",
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InFBZ2JmZ3VSbjFRTzMycU5PV0hLTnJGS01Pd1NldzFUYW1GWlBDSTc4SFEiLCJ0eXAiOiJKV1QifQ.eyJhbXIiOlsidXJuOm9wZW5haTphbXI6Z29vZ2xlIl0sImF1ZCI6WyJhcHBfRU1vYW1FRVo3M2YwQ2tYYVhwN2hyYW5uIl0sImF1dGhfcHJvdmlkZXIiOiJnb29nbGUiLCJhdXRoX3RpbWUiOjE3OTI3NjQ2NDUsImVtYWlsIjoiZnR5c3p5eEBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS9hdXRoIjp7ImNoYXRncHRfYWNjb3VudF9pZCI6IjY5YTUxMzcxLTVhOWEtNGNmZS04MDczLTU5N2UwMjFmMzE0NyIsImNoYXRncHRfcGxhbl90eXBlIjoicGx1cyIsImNoYXRncHRfc3Vic2NyaXB0aW9uX2FjdGl2ZV9zdGFydCI6IjIwMjYtMTAtMjNUMTI6NDc6MDMrMDA6MDAiLCJjaGF0Z3B0X3N1YnNjcmlwdGlvbl9hY3RpdmVfdW50aWwiOiIyMDI2LTExLTIzVDEyOjQ3OjAwKzAwOjAwIiwiY2hhdGdwdF9zdWJzY3JpcHRpb25fbGFzdF9jaGVja2VkIjoiMjAyNi0xMC0yM1QxNDoxMDo0NS42Mzc0ODkrMDA6MDAiLCJjaGF0Z3B0X3VzZXJfaWQiOiJ1c2VyLWZ4RDFPRURUblprQlE3UlV4UGVlU0loMCIsImdyb3VwcyI6W10sIm9yZ2FuaXphdGlvbnMiOlt7ImlkIjoib3JnLTVaZ1hSZ3pCdHlyR1BjblYyUVhBOTV0RCIsImlzX2RlZmF1bHQiOnRydWUsInJvbGUiOiJvd25lciIsInRpdGxlIjoiUGVyc29uYWwifV0sInVzZXJfaWQiOiJ1c2VyLWZ4RDFPRURUblprQlE3UlV4UGVlU0loMCJ9LCJpc3MiOiJodHRwczovL2F1dGgub3BlbmFpLmNvbSIsIm5hbWUiOiJcdTVmMjBcdTk2ZTgiLCJyYXQiOjE3OTI3NjQ2MzgsInNpZCI6ImF1dGhzZXNzXzJUcERPdkFlaUVKWHJTMnl6cm93TGlyQSIsInN1YiI6Imdvb2dsZS1vYXV0aDJ8MTA5MDUxODYzODE2MDYyODI0ODk5IiwiaWF0IjoxNzkyNzY0NjUwLCJleHAiOjE3OTI3NjgyNTAsImp0aSI6IjdmNWExMzBkNjM5NzRjYjk5YjY3Nzk1NWE0MDhiNjE5IiwiYXRfaGFzaCI6IkJkd2RUWm83SWo5UGp4UmJiNVE0TEEifQ.mTzif-mX7D0P8ot_xJWgElRAREgGpYO08gBjofVTRRF1LXpUFVehAcuRzCMhptR9PekJwPX5WBOdwpmkbpo_apATASqH-2Rp_uJhlQPuh13Nwdki_f09MB1PLOihkWDLsF2RoOebWf8Ml06KGPTyC66phQT1WDDA4MTQvf9Mykq_cAJTOTiG-H6RgJPbjiB19RSxs0a6pgn0pfQYOR6S-a9nFzpMABvkTk8dh-hDda3W52pGNJ9KYpgUkbkGeyp1wewEYrnncn3OuKDUIWX0u_iRsZow-Ztu5t7giQ3wF7DJ0vFizGceywlUYb3bCKASFivxp5UONs__eNdTHQXeXw",
"refresh_token": "rt.1.AAC1cQrWiMgZPWnkCrMi2Es18NJSFhWo5XGIAILmKQpSYM39KFG_trh6imhBYGSXBdmey4l119xew2w82rNaeQqXd8qIK4spWn7Pf53MaJHrmHBwNhWBFR6nKVVqtqlY-tyrVFTrddc8Jt9P2hoD2qZgC1AHjz0xHIYJvtqyhUqKejTGXsM-sFotyW0r2sE"
}
}config.yml
yaml
model_provider = "openai"
[model_providers.custom]
name = "custom"
wire_api = "responses"
base_url = "https://chatgpt.com/backend-api/codex"
requires_openai_auth = true
supports_websockets = true