Contributing
This project is under active development and the code will likely change pretty significantly.
At the moment, we only plan to prioritize reviewing external contributions for bugs or security fixes.
If you want to add a new feature or change the behavior of an existing one, please open an issue proposing the feature and get approval from an OpenAI team member before spending time building it.
New contributions that don't go through this process may be closed if they aren't aligned with our current roadmap or conflict with other priorities/upcoming features.
Development workflow
- Create a topic branch from
main
- e.g.feat/interactive-prompt
. - Keep your changes focused. Multiple unrelated fixes should be opened as separate PRs.
- Following the development setup instructions above, ensure your change is free of lint warnings and test failures.
Writing high-impact code changes
- Start with an issue. Open a new one or comment on an existing discussion so we can agree on the solution before code is written.
- Add or update tests. Every new feature or bug-fix should come with test coverage that fails before your change and passes afterwards. 100% coverage is not required, but aim for meaningful assertions.
- Document behaviour. If your change affects user-facing behaviour, update the README, inline help (
codex --help
), or relevant example projects. - Keep commits atomic. Each commit should compile and the tests should pass. This makes reviews and potential rollbacks easier.
Opening a pull request
- Fill in the PR template (or include similar information) - What? Why? How?
- Run all checks locally (
cargo test && cargo clippy --tests && cargo fmt -- --config imports_granularity=Item
). CI failures that could have been caught locally slow down the process. - Make sure your branch is up-to-date with
main
and that you have resolved merge conflicts. - Mark the PR as Ready for review only when you believe it is in a merge-able state.
Review process
- One maintainer will be assigned as a primary reviewer.
- If your PR adds a new feature that was not previously discussed and approved, we may choose to close your PR (see Contributing).
- We may ask for changes - please do not take this personally. We value the work, but we also value consistency and long-term maintainability.
- When there is consensus that the PR meets the bar, a maintainer will squash-and-merge.
Community values
- Be kind and inclusive. Treat others with respect; we follow the Contributor Covenant.
- Assume good intent. Written communication is hard - err on the side of generosity.
- Teach & learn. If you spot something confusing, open an issue or PR with improvements.
Getting help
If you run into problems setting up the project, would like feedback on an idea, or just want to say hi - please open a Discussion or jump into the relevant issue. We are happy to help.
Together we can make Codex CLI an incredible tool. Happy hacking! :rocket:
Contributor license agreement (CLA)
All contributors must accept the CLA. The process is lightweight:
- Open your pull request.
- Paste the following comment (or reply
recheck
if you've signed before):
text
I have read the CLA Document and I hereby sign the CLA
- The CLA-Assistant bot records your signature in the repo and marks the status check as passed.
No special Git commands, email attachments, or commit footers required.
Quick fixes
Scenario | Command |
---|---|
Amend last commit | git commit --amend -s --no-edit && git push -f |
The DCO check blocks merges until every commit in the PR carries the footer (with squash this is just the one).
Releasing codex
For admins only.
Make sure you are on main
and have no local changes. Then run:
VERSION=0.2.0 # Can also be 0.2.0-alpha.1 or any valid Rust version.
./codex-rs/scripts/create_github_release.sh "$VERSION"
This will make a local commit on top of main
with version
set to $VERSION
in codex-rs/Cargo.toml
(note that on main
, we leave the version as version = "0.0.0"
).
This will push the commit using the tag rust-v${VERSION}
, which in turn kicks off the release workflow. This will create a new GitHub Release named $VERSION
.
If everything looks good in the generated GitHub Release, uncheck the pre-release box so it is the latest release.
Create a PR to update Formula/c/codex.rb
on Homebrew.
Security & responsible AI
Have you discovered a vulnerability or have concerns about model output? Please e-mail security@openai.com and we will respond promptly.