Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
139 commits
Select commit Hold shift + click to select a range
df46ea4
Terminal Detection Metadata for Per-Terminal Scroll Scaling (#8252)
joshka-oai Dec 18, 2025
6395430
add a default dacl to restricted token to enable reading of pipes (#8…
iceweasel-oai Dec 18, 2025
87abf06
fix: flaky tests 5 (#8282)
jif-oai Dec 18, 2025
4fb0b54
feat: add `/ps` (#8279)
jif-oai Dec 18, 2025
2f048f2
feat: add support for /etc/codex/requirements.toml on UNIX (#8277)
bolinfest Dec 18, 2025
d7ae342
feat(app-server): add v2 deprecation notice (#8285)
owenlin0 Dec 18, 2025
8f0b383
model list (#8286)
pakrym-oai Dec 18, 2025
9fb9ed6
Set exclude to true by default in app server (#8281)
ambrosino-oai Dec 18, 2025
53f5317
chore: upgrade rmcp crate from 0.10.0 to 0.12.0 (#8288)
bolinfest Dec 18, 2025
1cd1cf1
Update system skills bundled with codex-rs (#8253)
gverma-openai Dec 18, 2025
358a5ba
Support skills shortDescription. (#8278)
xl-openai Dec 18, 2025
46baedd
fix: change codex/sandbox-state/update from a notification to a reque…
bolinfest Dec 18, 2025
2d98260
fix: remove duplicate shell_snapshot FeatureSpec (#8274)
zchee Dec 18, 2025
3d4ced3
chore: migrate from Config::load_from_base_config_with_overrides to C…
bolinfest Dec 19, 2025
3429de2
feat: introduce ExternalSandbox policy (#8290)
apanasenko-oai Dec 19, 2025
6c76d17
feat: collapse "waiting" of `unified_exec` (#8257)
jif-oai Dec 19, 2025
dcc0119
UI tweaks on skills popup. (#8250)
xl-openai Dec 19, 2025
ba835c3
Fix tests (#8299)
xl-openai Dec 19, 2025
d353372
skills feature default on. (#8297)
xl-openai Dec 19, 2025
8120c87
Support admin scope skills. (#8296)
xl-openai Dec 19, 2025
f4371d2
Add short descriptions to system skills (#8301)
gverma-openai Dec 19, 2025
339b052
Fix admin skills. (#8305)
xl-openai Dec 19, 2025
6f94a90
Keep skills feature flag default OFF for windows. (#8308)
xl-openai Dec 19, 2025
eeda6a5
Revert "Keep skills feature flag default OFF for windows." (#8325)
xl-openai Dec 19, 2025
37071e7
Update system skills from OSS repo (#8328)
gverma-openai Dec 19, 2025
b15b508
Fix link to contributing.md in experimental.md (#8311)
jdijk-deventit Dec 19, 2025
014235f
Fix: /undo destructively interacts with git staging (#8214) (#8303)
Galaxy-0 Dec 19, 2025
7e5c343
feat: make ConstraintError an enum (#8330)
bolinfest Dec 19, 2025
0a7021d
fix: enable resume_warning that was missing from mod.rs (#8333)
bolinfest Dec 19, 2025
e3d3445
Update models.json (#8168)
github-actions[bot] Dec 19, 2025
1d4463b
feat(tui2): coalesce transcript scroll redraws (#8295)
joshka-oai Dec 19, 2025
ec3738b
feat: move file name derivation into codex-file-search (#8334)
RQfreefly Dec 19, 2025
dc61fc5
feat: support allowed_sandbox_modes in requirements.toml (#8298)
bolinfest Dec 19, 2025
797a68b
bump cargo-deny-action ver (#8345)
sayan-oai Dec 19, 2025
f0dc6fd
Rename OpenAI models to models manager (#8346)
aibrahim-oai Dec 20, 2025
a697408
chore: enusre the logic that creates ConfigLayerStack has access to c…
bolinfest Dec 20, 2025
63942b8
feat(tui2): tune scrolling inpu based on (#8357)
joshka-oai Dec 20, 2025
987dd7f
Chore: remove rmcp feature and exp flag usages (#8087)
shijie-oai Dec 20, 2025
fab1ded
Remove plan from system skills (#8374)
gverma-openai Dec 21, 2025
d281bcf
Point skills docs to developer documentation site (#8407)
etraut-openai Dec 22, 2025
aa83d7d
fix: do not panic on alphas (#8406)
aibrahim-oai Dec 22, 2025
99cbba8
Update ghost_commit flag reference to undo (#8091)
charlie-openai Dec 22, 2025
3c353a3
test(tui2): re-enable ANSI for VT100 tests (#8423)
joshka-oai Dec 22, 2025
4e6d6cd
fix(tui2): constrain transcript mouse selection bounds (#8419)
joshka-oai Dec 22, 2025
7a8407b
chore: un-ship undo (#8424)
jif-oai Dec 22, 2025
372de6d
docs: add `developer_instructions` config option and update descripti…
448523760 Dec 22, 2025
45727b9
chore: drop undo from the docs (#8431)
jif-oai Dec 22, 2025
5a0b5d1
chore(deps): bump peter-evans/create-pull-request from 7 to 8 (#8410)
dependabot[bot] Dec 22, 2025
334dbe5
chore(deps): bump test-log from 0.2.18 to 0.2.19 in /codex-rs (#8412)
dependabot[bot] Dec 22, 2025
6c84709
chore(deps): bump landlock from 0.4.2 to 0.4.4 in /codex-rs (#8413)
dependabot[bot] Dec 22, 2025
8d5ab97
chore(deps): bump clap from 4.5.47 to 4.5.53 in /codex-rs (#8414)
dependabot[bot] Dec 22, 2025
b24b788
chore(deps): bump openssl-sys from 0.9.109 to 0.9.111 in /codex-rs (#…
dependabot[bot] Dec 22, 2025
33e1d08
feat(windows) start powershell in utf-8 mode (#7902)
dylan-hurd-oai Dec 22, 2025
96fdbdd
Add ExecPolicyManager (#8349)
pakrym-oai Dec 22, 2025
8ff16a7
feat: support in-repo .codex/config.toml entries as sources of config…
bolinfest Dec 22, 2025
314937f
feat: add support for project_root_markers in config.toml (#8359)
bolinfest Dec 22, 2025
0237459
Handle concatenation nodes in bash command parser for exec policy (#8…
ivanmurashko Dec 22, 2025
7809e36
Update models.json (#8446)
github-actions[bot] Dec 22, 2025
d65fe38
use a junction for the cwd while read ACLs are being applied (#8444)
iceweasel-oai Dec 22, 2025
6b2ef21
remove minimal client version (#8447)
aibrahim-oai Dec 22, 2025
8e900c2
chore: add ConfigLayerStack as a field of Config (#8448)
bolinfest Dec 22, 2025
4673090
feat: open prompt in configured external editor (#7606)
sayan-oai Dec 22, 2025
7d0c5c7
fix(tui2): copy transcript selection outside viewport (#8449)
joshka-oai Dec 22, 2025
f6275a5
chore(tui): include tracing targets in file logs (#8418)
joshka-oai Dec 22, 2025
14dbd06
chore: include User layer in ConfigLayerStack even if config.toml is …
bolinfest Dec 23, 2025
277babb
feat: load ExecPolicyManager from ConfigLayerStack (#8453)
bolinfest Dec 23, 2025
414fbe0
feat(tui2): add copy selection shortcut + UI affordance (#8462)
joshka-oai Dec 23, 2025
e27d9bd
feat: honor /etc/codex/config.toml (#8461)
bolinfest Dec 23, 2025
310f211
fix(tui2): fix screen corruption (#8463)
joshka-oai Dec 23, 2025
cbc5fb9
chore: save more about turn context in rollout log file (#8458)
apanasenko-oai Dec 23, 2025
2828549
fix(tui2): start transcript selection on drag (#8466)
joshka-oai Dec 23, 2025
53eb2e9
[tui] add optional details to TUI status header (#8293)
sayan-oai Dec 23, 2025
0130a2f
feat(tui2): add multi-click transcript selection (#8471)
joshka-oai Dec 23, 2025
f2b740c
fix(codex-cli): improve ripgrep download diagnostics (#8486)
joshka-oai Dec 23, 2025
fb24c47
fix: limit output size for exec command in unified exec (#8460)
shijie-oai Dec 23, 2025
972b585
fix: fix test that was writing temp file to cwd instead of TMPDIR (#8…
bolinfest Dec 23, 2025
40de81e
Remove reasoning format (#8484)
aibrahim-oai Dec 24, 2025
96a65ff
perf(tui): cap redraw scheduling to 60fps (#8499)
joshka-oai Dec 24, 2025
e61bae1
feat: introduce codex-utils-cargo-bin as an alternative to assert_cmd…
bolinfest Dec 24, 2025
38de0a1
fix: declare test path relative to `$CARGO_MANIFEST_DIR` (#8498)
bolinfest Dec 24, 2025
bf73260
[chore] add additional_details to StreamErrorEvent + wire through (#8…
sayan-oai Dec 24, 2025
810ebe0
fix: restrict windows-sys to Windows target (#8522)
RunjiLiu Dec 25, 2025
ce3ff29
chore(deps): bump toml_edit from 0.23.7 to 0.24.0+spec-1.1.0 in /code…
dependabot[bot] Dec 30, 2025
4313e0a
chore(deps): bump tracing-subscriber from 0.3.20 to 0.3.22 in /codex-…
dependabot[bot] Dec 30, 2025
a48904d
chore(deps): bump tokio from 1.47.1 to 1.48.0 in /codex-rs (#8597)
dependabot[bot] Dec 30, 2025
13c42a0
chore(deps): bump regex-lite from 0.1.7 to 0.1.8 in /codex-rs (#8598)
dependabot[bot] Dec 30, 2025
66b7c67
Refresh on models etag mismatch (#8491)
aibrahim-oai Jan 1, 2026
79ce79a
use a SandboxUsers group for ACLs instead of granting to each sandbox…
iceweasel-oai Jan 2, 2026
7078a0b
Log compaction request bodies (#8676)
pakrym-oai Jan 2, 2026
2de7314
Remove model family from tui (#8488)
aibrahim-oai Jan 2, 2026
ab75338
Replaced user documentation with links to developers docs site (#8662)
etraut-openai Jan 2, 2026
3cfa4bc
perf(tui2): reduce unnecessary redraws (#8681)
joshka-oai Jan 2, 2026
82fcc08
Fixed broken link in README (#8682)
etraut-openai Jan 2, 2026
efd2d76
Account for last token count on resume (#8677)
aibrahim-oai Jan 2, 2026
6846bc1
hard disable remote models refresh when feature is disabled (#8687)
aibrahim-oai Jan 2, 2026
c673e7a
chore(deps): bump tracing-opentelemetry from 0.31.0 to 0.32.0 in /cod…
dependabot[bot] Jan 3, 2026
1b5095b
Attach more tags to feedback submissions (#8688)
pakrym-oai Jan 3, 2026
ee9d441
chore: update outdated docs (#8701)
tibo-openai Jan 3, 2026
90f37e8
perf(tui2): cache transcript view rendering (#8693)
joshka-oai Jan 3, 2026
19525ef
fix: brighten transcript copy affordance (#8697)
joshka-oai Jan 3, 2026
0c1658d
ci: prevent workflows from running on forks (#8629)
leezenn Jan 3, 2026
279283f
fix(tui2): avoid scroll stickiness at cell boundaries (#8695)
joshka-oai Jan 3, 2026
12474d3
Merge upstream/main
ScriptedAlchemy Jan 4, 2026
368ba2d
Revert read_file enablement for codex models
ScriptedAlchemy Jan 5, 2026
c2810cd
fix(tui): add missing tokio::test
ScriptedAlchemy Jan 5, 2026
5678213
fix(tui2): render copy pill at viewport bottom (#8716)
joshka-oai Jan 5, 2026
181ff89
tui2: copy selection dismisses highlight (#8718)
joshka-oai Jan 5, 2026
1d678c8
chore(deps): bump clap_complete from 4.5.57 to 4.5.64 in /codex-rs (#…
dependabot[bot] Jan 5, 2026
db1423a
chore(deps): bump tokio-stream from 0.1.17 to 0.1.18 in /codex-rs (#8…
dependabot[bot] Jan 5, 2026
e139ef3
chore(deps): bump derive_more from 2.0.1 to 2.1.1 in /codex-rs (#8724)
dependabot[bot] Jan 5, 2026
a8e0fe8
chore(deps): bump insta from 1.44.3 to 1.46.0 in /codex-rs (#8725)
dependabot[bot] Jan 5, 2026
d756e41
fix(codex-agents-suite): align with sdk types
ScriptedAlchemy Jan 5, 2026
2d5a231
Merge remote-tracking branch 'upstream/main' into sync-upstream-main-…
ScriptedAlchemy Jan 5, 2026
649badd
fix: chat multiple tool calls (#8556)
jif-oai Jan 5, 2026
0b53aed
fix: /review to respect session cwd (#8738)
tibo-openai Jan 5, 2026
e51f422
Fix clippy: derive Default for SetupMode
ScriptedAlchemy Jan 5, 2026
ac6b955
test(core): cover read-only temp write allowances on macOS
ScriptedAlchemy Jan 5, 2026
468ee8a
[MCP] Sanitize MCP tool names to ensure they are compatible with the …
gpeal Jan 5, 2026
8f10d3b
feat(tui2): transcript scrollbar (auto-hide + drag) (#8728)
joshka-oai Jan 5, 2026
bba5e5e
fix(codex-api): handle Chat Completions DONE sentinel (#8708)
joshka-oai Jan 5, 2026
1d8e2b4
(MacOS) Load config requirements from MDM (#8743)
gt-oai Jan 5, 2026
807f8a4
feat: expose outputSchema to user_turn/turn_start app_server API (#8377)
apanasenko-oai Jan 5, 2026
fabb797
chore: GH pager (#8747)
jif-oai Jan 5, 2026
720fa67
better idempotency for creating/updating firewall rules during setup.…
iceweasel-oai Jan 5, 2026
95580f2
never let sandbox write to .codex/ or .codex/.sandbox/ (#8683)
iceweasel-oai Jan 5, 2026
57f8158
chore: improve skills render section (#8459)
gverma-openai Jan 5, 2026
7cf6f1c
Use issuer URL in device auth prompt link (#7858)
abrar71 Jan 5, 2026
3ff5b72
Merge upstream/main
ScriptedAlchemy Jan 5, 2026
07f077d
best effort to "hide" Sandbox users (#8492)
iceweasel-oai Jan 5, 2026
c118d75
test(core): cover read-only temp write allowances on macOS
ScriptedAlchemy Jan 5, 2026
cafb07f
feat: add justification arg to prefix_rule() in *.rules (#8751)
bolinfest Jan 5, 2026
c29afc0
[device-auth] Update login instruction for headless environments. (#8…
mzeng-openai Jan 5, 2026
58a91a0
Use ConfigLayerStack for skills discovery. (#8497)
xl-openai Jan 5, 2026
5f8776d
Allow global exec flags after `resume` and fix CI codex build/timeout…
fjord-oai Jan 5, 2026
ca706b7
Merge upstream/main
ScriptedAlchemy Jan 5, 2026
134044c
Fix native resume args after upstream merge
ScriptedAlchemy Jan 6, 2026
2b15a25
CI: set GH_TOKEN for DotSlash gh fallback
ScriptedAlchemy Jan 6, 2026
40e991e
CI: set GH_TOKEN for tests job
ScriptedAlchemy Jan 6, 2026
0a37ea8
core: raise timeout for PowerShell unicode shell tests on Windows
ScriptedAlchemy Jan 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .codespellignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
iTerm
iterm
iTerm2
psuedo
2 changes: 1 addition & 1 deletion .codespellrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
skip = .git*,vendor,*-lock.yaml,*.lock,.codespellrc,.codespellignore,*test.ts,*.jsonl,frame*.txt,**/node_modules/**,**/dist/**,**/target/**,sdk/native/dist-examples_ignored/**,sdk/native/dist-examples/**,sdk/native/package-lock.json,**/.cache/**,**/.venv/**,**/.codex-ci/**,**/.fastembed_cache/**
check-hidden = true
ignore-regex = ^\s*"image/\S+": ".*|\b(afterAll)\b
ignore-words-list = ratatui,ser,iTerm,iterm,trys,vEw,ANE,psuedo
ignore-words-list = ratatui,ser,iTerm,iterm2,iterm,trys,vEw,ANE,psuedo
Binary file removed .github/codex-cli-login.png
Binary file not shown.
Binary file removed .github/codex-cli-permissions.png
Binary file not shown.
Binary file modified .github/codex-cli-splash.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed .github/demo.gif
Binary file not shown.
2 changes: 1 addition & 1 deletion .github/workflows/cargo-deny.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
uses: dtolnay/rust-toolchain@stable

- name: Run cargo-deny
uses: EmbarkStudios/cargo-deny-action@v1
uses: EmbarkStudios/cargo-deny-action@v2
with:
rust-version: stable
manifest-path: ./codex-rs/Cargo.toml
2 changes: 2 additions & 0 deletions .github/workflows/close-stale-contributor-prs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ permissions:

jobs:
close-stale-contributor-prs:
# Prevent scheduled runs on forks
if: github.repository == 'openai/codex'
runs-on: ubuntu-latest
steps:
- name: Close inactive PRs from contributors
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/issue-deduplicator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ concurrency:
jobs:
gather-duplicates:
name: Identify potential duplicates
if: ${{ github.event.action == 'opened' || (github.event.action == 'labeled' && github.event.label.name == 'codex-deduplicate') }}
# Prevent runs on forks (requires OpenAI API key, wastes Actions minutes)
if: github.repository == 'openai/codex' && (github.event.action == 'opened' || (github.event.action == 'labeled' && github.event.label.name == 'codex-deduplicate'))
runs-on: ubuntu-latest
permissions:
contents: read
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/issue-labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ concurrency:
jobs:
gather-labels:
name: Generate label suggestions
if: ${{ github.event.action == 'opened' || (github.event.action == 'labeled' && github.event.label.name == 'codex-label') }}
# Prevent runs on forks (requires OpenAI API key, wastes Actions minutes)
if: github.repository == 'openai/codex' && (github.event.action == 'opened' || (github.event.action == 'labeled' && github.event.label.name == 'codex-label'))
runs-on: ubuntu-latest
permissions:
contents: read
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/rust-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ jobs:
USE_SCCACHE: ${{ startsWith(matrix.runner, 'windows') && 'false' || 'true' }}
CARGO_INCREMENTAL: "0"
SCCACHE_CACHE_SIZE: 10G
# DotSlash can fall back to `gh release download` when direct URL fetches are flaky.
GH_TOKEN: ${{ github.token }}

strategy:
fail-fast: false
Expand Down Expand Up @@ -358,6 +360,8 @@ jobs:
USE_SCCACHE: ${{ startsWith(matrix.runner, 'windows') && 'false' || 'true' }}
CARGO_INCREMENTAL: "0"
SCCACHE_CACHE_SIZE: 10G
# DotSlash can fall back to `gh release download` when direct URL fetches are flaky.
GH_TOKEN: ${{ github.token }}

strategy:
fail-fast: false
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/rust-release-prepare.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ permissions:

jobs:
prepare:
# Prevent scheduled runs on forks (no secrets, wastes Actions minutes)
if: github.repository == 'openai/codex'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
Expand Down Expand Up @@ -41,7 +43,7 @@ jobs:
curl --http1.1 --fail --show-error --location "${headers[@]}" "${url}" | jq '.' > codex-rs/core/models.json

- name: Open pull request (if changed)
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@v8
with:
commit-message: "Update models.json"
title: "Update models.json"
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,8 @@ CHANGELOG.ignore.md
# nix related
.direnv
.envrc

# Python bytecode files
__pycache__/
*.pyc

6 changes: 6 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,12 @@ The `sdk/native` package provides Node.js bindings to the Rust engine via N‑AP
- Prefer deep equals comparisons whenever possible. Perform `assert_eq!()` on entire objects, rather than individual fields.
- Avoid mutating process environment in tests; prefer passing environment-derived flags or dependencies from above.

### Spawning workspace binaries in tests (Cargo vs Buck2)

- Prefer `codex_utils_cargo_bin::cargo_bin("...")` over `assert_cmd::Command::cargo_bin(...)` or `escargot` when tests need to spawn first-party binaries.
- Under Buck2, `CARGO_BIN_EXE_*` may be project-relative (e.g. `buck-out/...`), which breaks if a test changes its working directory. `codex_utils_cargo_bin::cargo_bin` resolves to an absolute path first.
- When locating fixture files under Buck2, avoid `env!("CARGO_MANIFEST_DIR")` (Buck codegen sets it to `"."`). Prefer deriving paths from `codex_utils_cargo_bin::buck_project_root()` when needed.

### Integration tests (core)

- Prefer the utilities in `core_test_support::responses` when writing end-to-end Codex tests.
Expand Down
77 changes: 12 additions & 65 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,31 @@
<p align="center"><code>npm i -g @openai/codex</code><br />or <code>brew install --cask codex</code></p>

<p align="center"><strong>Codex CLI</strong> is a coding agent from OpenAI that runs locally on your computer.
</br>
</br>If you want Codex in your code editor (VS Code, Cursor, Windsurf), <a href="https://developers.openai.com/codex/ide">install in your IDE</a>
</br>If you are looking for the <em>cloud-based agent</em> from OpenAI, <strong>Codex Web</strong>, go to <a href="https://chatgpt.com/codex">chatgpt.com/codex</a></p>

<p align="center">
<img src="./.github/codex-cli-splash.png" alt="Codex CLI splash" width="80%" />
</p>
</p>
</br>
If you want Codex in your code editor (VS Code, Cursor, Windsurf), <a href="https://developers.openai.com/codex/ide">install in your IDE.</a>
</br>If you are looking for the <em>cloud-based agent</em> from OpenAI, <strong>Codex Web</strong>, go to <a href="https://chatgpt.com/codex">chatgpt.com/codex</a>.</p>

---

## Quickstart

### Installing and running Codex CLI

Install globally with your preferred package manager. If you use npm:
Install globally with your preferred package manager:

```shell
# Install using npm
npm install -g @openai/codex
```

Alternatively, if you use Homebrew:

```shell
# Install using Homebrew
brew install --cask codex
```

Then simply run `codex` to get started:

```shell
codex
```

If you're running into upgrade issues with Homebrew, see the [FAQ entry on brew upgrade codex](./docs/faq.md#brew-upgrade-codex-isnt-upgrading-me).
Then simply run `codex` to get started.

<details>
<summary>You can also go to the <a href="https://github.com/openai/codex/releases/latest">latest GitHub Release</a> and download the appropriate binary for your platform.</summary>
Expand All @@ -53,60 +45,15 @@ Each archive contains a single entry with the platform baked into the name (e.g.

### Using Codex with your ChatGPT plan

<p align="center">
<img src="./.github/codex-cli-login.png" alt="Codex CLI login" width="80%" />
</p>

Run `codex` and select **Sign in with ChatGPT**. We recommend signing into your ChatGPT account to use Codex as part of your Plus, Pro, Team, Edu, or Enterprise plan. [Learn more about what's included in your ChatGPT plan](https://help.openai.com/en/articles/11369540-codex-in-chatgpt).

You can also use Codex with an API key, but this requires [additional setup](./docs/authentication.md#usage-based-billing-alternative-use-an-openai-api-key). If you previously used an API key for usage-based billing, see the [migration steps](./docs/authentication.md#migrating-from-usage-based-billing-api-key). If you're having trouble with login, please comment on [this issue](https://github.com/openai/codex/issues/1243).

### Model Context Protocol (MCP)

Codex can access MCP servers. To configure them, refer to the [config docs](./docs/config.md#mcp_servers).

### Configuration

Codex CLI supports a rich set of configuration options, with preferences stored in `~/.codex/config.toml`. For full configuration options, see [Configuration](./docs/config.md).
You can also use Codex with an API key, but this requires [additional setup](https://developers.openai.com/codex/auth#sign-in-with-an-api-key).

### Execpolicy
## Docs

See the [Execpolicy quickstart](./docs/execpolicy.md) to set up rules that govern what commands Codex can execute.

### Docs & FAQ

- [**Getting started**](./docs/getting-started.md)
- [CLI usage](./docs/getting-started.md#cli-usage)
- [Slash Commands](./docs/slash_commands.md)
- [Running with a prompt as input](./docs/getting-started.md#running-with-a-prompt-as-input)
- [Example prompts](./docs/getting-started.md#example-prompts)
- [Custom prompts](./docs/prompts.md)
- [Memory with AGENTS.md](./docs/getting-started.md#memory-with-agentsmd)
- [**Configuration**](./docs/config.md)
- [Example config](./docs/example-config.md)
- [**Sandbox & approvals**](./docs/sandbox.md)
- [**Execpolicy quickstart**](./docs/execpolicy.md)
- [**Authentication**](./docs/authentication.md)
- [Auth methods](./docs/authentication.md#forcing-a-specific-auth-method-advanced)
- [Login on a "Headless" machine](./docs/authentication.md#connecting-on-a-headless-machine)
- **Automating Codex**
- [GitHub Action](https://github.com/openai/codex-action)
- [TypeScript SDK](./sdk/typescript/README.md)
- [Non-interactive mode (`codex exec`)](./docs/exec.md)
- [**Advanced**](./docs/advanced.md)
- [Tracing / verbose logging](./docs/advanced.md#tracing--verbose-logging)
- [Model Context Protocol (MCP)](./docs/advanced.md#model-context-protocol-mcp)
- [**Zero data retention (ZDR)**](./docs/zdr.md)
- [**Codex Documentation**](https://developers.openai.com/codex)
- [**Contributing**](./docs/contributing.md)
- [**Install & build**](./docs/install.md)
- [System Requirements](./docs/install.md#system-requirements)
- [DotSlash](./docs/install.md#dotslash)
- [Build from source](./docs/install.md#build-from-source)
- [**FAQ**](./docs/faq.md)
- [**Installing & building**](./docs/install.md)
- [**Open source fund**](./docs/open-source-fund.md)

---

## License

This repository is licensed under the [Apache-2.0 License](LICENSE).
Loading
Loading