101 Commits
Author SHA1 Message Date
zeekay 43a2ed215f test: check every surface, and test the thing that edits upstream
The branding check read `dev --help` only, which is why `dev exec`
announced "OpenAI Codex" as its banner for a while — `--help` never shows
it. It now reads every subcommand's help, and found four more leaks by
itself: exec's usage line, its --strict-config and --skip-git-repo-check
text, and `-c/--config` still naming ~/.codex/config.toml. That last one
was recorded as unreachable when a copied island could not include
utils/cli; editing the checkout in place made it reachable.

Two things keep the word legitimately and are exempt: CODEX_HOME, an
environment variable upstream owns, and `codex/...`, which names a method
on the app-server wire protocol. Renaming either breaks something real.
Branding is the product name a reader sees, not identifiers on a wire.

hanzo-upstream had no tests, and it is the code that edits upstream in
place — including an idempotence bug shipped earlier today that stacked
appending edits until `hanzo-tui` appeared three times in one manifest.
The anchor logic is now a pure function with six tests, one of which is
that exact regression, and one of which asserts every shipped anchor is
well formed. `make test` reaches the crate now; being a detached
workspace, the root run could not see it.

Cloud tasks are Hanzo Tasks, not the upstream service's name.
2026-09-07 21:40:25 -07:00
zeekay b31cb86dad chore: nothing in the root says whose agent this used to be
`codex-cli/` published `@hanzo/dev`, so the directory carrying our npm
package was named after someone else's product. It is `npm/`.
`patches/codex.json` is `patches/upstream.json` — it anchors edits against
upstream, and the file should say so rather than name one of them.

Deleted outright: `justfile`, whose first line was
`set working-directory := "codex-rs"` for a directory this repository has
never had; `announcement_tip.toml`, an example file for a TUI we do not
ship; and `.codex/` and `.code/`, which held upstream's own process skills
— babysit-pr, codex-bug, pushing-ci-changes — that were never ours.

Three branding leaks a real run turned up, none of which the help text
showed: `dev exec` announced "OpenAI Codex v0.7.0-dev.1" as its first
line, the status card was missed when the session header was anchored,
and both bubblewrap warnings said "Codex's Linux sandbox".

README: say what ships. It claimed the agent drives a browser, which is
the port that has not landed, and showed a screenshot of it doing so.
Both are gone until the bridge is back. The model count is "hundreds" —
`/v1/models` answers 458 today, an earlier line here said "over 500", and
hanzo.ai derives its own count precisely because typed ones drift.
Document the npm install beside the curl one; both give the same build.
2026-09-07 20:32:32 -07:00
zeekay d87a98cdf6 docs: describe the workspace that exists
LLM.md still described code-rs, build-fast.sh and a VT100 harness under a
directory this repo no longer has — and AGENTS.md, CLAUDE.md and GEMINI.md
all symlink to it, so it is the file every agent reads first. Rewrite it
for the workspace that is actually here, including the rule that upstream
is never edited by hand because `make bump` discards such edits.

Fix five broken images: the README pointed at docs/logo.png and
docs/screenshots/, and they live in docs/images/. Predates the cutover.

State the catalog honestly. "enso and the zen5 family" undersold a gateway
that answers for over five hundred models. Round, not exact — hanzo.ai
derives its count from the pricing snapshot and fails the build on a
hand-typed one, and a number typed here would drift the same way.
2026-09-07 19:18:32 -07:00
zeekay 901a81abe9 docs: describe this product, and only what it can do
The docs read as OpenAI's Codex CLI: a getting-started page titled for it,
`codex --enable skills` and `code sandbox macos` for commands that do not
exist, defaults given as gpt-5.1-codex-max/openai when they are
zen5-coder/hanzo, a Homebrew page describing a formula we do not publish.

Removed three tui-stream-chunking notes and the execpolicy page: they
document modules and a subcommand that live only in the vendored upstream
copy. There is no execpolicy subcommand and no .codexpolicy loader in
code-rs; the page told users to run something the binary does not have.

Rewrote tui-alternate-screen against the source. It described an
auto/always/never enum and a --no-alt-screen flag; the shipped behavior is a
tui.alternate_screen bool with Ctrl+T, which replays the transcript into
scrollback on the way out — a better answer to Zellij than the one written
down. Genuine openai-provider documentation stays.
2026-08-07 21:51:19 -07:00
zeekay d3a9c6aa46 docs(readme): name the proximate upstream in the lineage note
This repo forked just-every/code, which forked openai/codex. The note named
only openai/codex, which understates provenance.
2026-08-01 13:28:02 -07:00
zeekayandHanzo Dev 6ba33c7a34 docs: rewrite README as Hanzo Dev
The README was upstream just-every/code text end to end: titled "CODE",
install lines `npx -y @just-every/code` and `npm install -g @just-every/code`
(a third party's package, which resolves and installs), clone URL
just-every/code.git, "Sign in with ChatGPT" as the primary auth, a block
telling readers to install @anthropic-ai/claude-code and @google/gemini-cli,
and an issues link pointing at just-every/code/issues — our support link
sending our users to someone else's tracker.

Replaced with our own copy. Install is `curl -fsSL https://hanzo.sh | sh`
then `hanzo auth login`; the command is `hanzo dev`. Every flag and slash
command listed was read off the shipped binary (hanzo 1.9.18) and the
SlashCommand enum, not copied. Model ids enso / enso-ultra / zen5-coder
verified against catalog.hanzo.ai. Fixed the THEME_CONFIG.md link, which
was a 404 at the repo root — the file lives in docs/.

Does not touch provider or model defaults or the release workflow.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-01 13:26:19 -07:00
James Peter 224af74fc0 chore(workspace): sync codex tree and finish reset plan 2025-10-05 09:04:09 +10:00
James Peter 452d13e617 fix(tui/agents): install claude gemini qwen via npm 2025-10-03 19:09:06 +10:00
blakkdandGitHub bee18f353f typo in default config.toml value 2025-09-26 23:25:46 +02:00
blakkdandGitHub 3d7a6a8950 typo in default config.toml value 2025-09-26 23:23:53 +02:00
James Peter 6e57ee4737 fix(core/config): allow overriding OpenAI wire API via env
Fixes #234
2025-09-25 15:28:39 +10:00
James Peter 633b4b4ba9 fix(tui/history): centralize render cache state 2025-09-20 13:24:59 +10:00
James Peter 2f18e78f04 docs: clarify config directories (closes #181) 2025-09-18 17:21:12 +10:00
James Peter 71087e7486 fix(core/parse,tui): restore jq search + alt scroll 2025-09-17 02:00:40 +10:00
James Peter 54f64edab4 feat(tui/model): restore /model selector and presets 2025-09-16 13:42:07 +10:00
James Peter 975f28c5a6 merge: adopt upstream versions for mcp-server and TUI onboarding auth widget 2025-08-20 09:06:28 +10:00
James Peter fc17d512b7 refactor(naming): switch binaries and artifacts from 'coder' to 'code'; keep 'coder' as fallback alias only. Update workflows, scripts, and postinstall. 2025-08-17 20:45:10 +10:00
James Peter f42ea9771f docs(README): note about 'coder' alias to avoid conflicts with VS Code 'code' 2025-08-17 19:18:38 +10:00
James Peter ef77a0a12d docs(README): add screenshots with captions; feat(README): mention diff viewer in Why Code; build(build-fast): suppress warnings in dev-fast output 2025-08-17 18:55:59 +10:00
James Peter e1f9079b50 chore: commit pending changes on main (CLI, TUI, core, docs) 2025-08-17 18:55:58 +10:00
James Peter 434f13571f chore(rebrand): rename user-facing Coder → Code; update links to new repo
- Update TUI titles, labels, messages
- Update onboarding copy and links
- Update MCP titles and human-output banner
- Update README branding and URLs
- postinstall: switch release URL to just-every/code; offer optional 'code' alias without collisions
- package.json repository URL updated

Note: CLI command remains 'coder' to avoid VS Code collision; optional alias offered interactively.
2025-08-16 12:10:29 +10:00
James Peter b0152b2169 Fix CI/CD issues and optimize build performance
- Disable rust-ci workflow temporarily due to clippy warnings from upstream merge
- Add comprehensive build caching to Release and rust-release workflows:
  - Cache cargo registry and build artifacts
  - Add sccache for compilation caching
  - Optimize with parallel jobs and incremental compilation
- Fix Rust formatting issues
- Fix some critical clippy warnings (redundant closures, format strings)
- Performance improvements should reduce CI build times significantly

The builds were taking 15-20 minutes but should now be much faster with:
- Cargo registry caching
- Target directory caching with content-aware keys
- sccache for compilation caching
- Parallel job optimization
- Incremental compilation enabled
2025-08-14 21:17:09 +10:00
James PeterandHanzo Dev a80a6fe65e Fix slash command argument parsing and add browser enhancements
Major changes:
- Fixed slash command handlers receiving full command text instead of just arguments
  - Added command_args extraction in app.rs to properly parse arguments
  - Now /browser and /chrome commands receive only their arguments, not the full command

Browser improvements:
- Added Chrome browser integration with external Chrome DevTools
- Implemented virtual cursor visualization with smooth animation
- Added screenshot deduplication using perceptual hashing (pHash + dHash)
- Enhanced browser manager with Chrome connection support
- Added chrome_selection_view for browser mode selection UI

Image comparison:
- Implemented efficient image comparison using perceptual hashing
- Screenshots are now deduplicated to reduce token usage
- System shows "[Screenshot unchanged]" when identical screenshots detected

Code cleanup:
- Fixed unused variable warnings in browser/src/page.rs
- Marked unused image comparison function with underscore prefix
- All builds now compile without warnings

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-14 18:30:08 +10:00
James PeterandHanzo Dev c57b93536d fix: correct /chrome command parsing in handle_browser_command
The function was expecting '/browser' to be in the command text and
looking at parts[1], but /chrome passes just 'chrome' or 'chrome [port]',
so we need to look at parts[0] instead.

- Changed index from parts[1] to parts[0] for first argument
- Fixed port parsing to use parts[1] instead of parts[2]
- Updated condition from parts.len() > 1 to \!parts.is_empty()

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-13 21:08:18 +10:00
James PeterandHanzo Dev d36fb7d3e9 feat: implement browser upgrade with improved screenshot functionality
- Remove prevent_focus_steal config option (no longer needed)
- Add background page for screenshots to prevent focus stealing
- Improve Chrome connection with parallel port testing
- Add navigation monitoring support
- Enhance chatwidget with screenshot slash command
- Add support for multiple screenshot paths
- Update README with feature descriptions
- Improve Chrome port detection script

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-12 22:57:53 +10:00
James PeterandHanzo Dev 75e1673922 feat: restore emoji characters and remove restrictive README checks
- Restore emoji characters in README.md for better visual appeal
- Remove Table of Contents markers requirement
- Disable ASCII-only and ToC validation for root README in CI
- Keep validation for codex-cli/README.md (maintains upstream compatibility)

This allows the fork to have a more modern, visually appealing README
while still maintaining compatibility where needed.

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-12 16:21:43 +10:00
James PeterandHanzo Dev ccf0350286 fix: update Table of Contents to match README structure
Add missing 'Why Coder' and 'Environment variables' sections to ToC to pass CI checks

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-12 15:04:56 +10:00
James PeterandHanzo Dev cc18189dc0 fix: add Table of Contents markers to README.md
Add required <!-- Begin ToC --> and <!-- End ToC --> markers to pass CI workflow checks

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-12 15:03:40 +10:00
James PeterandHanzo Dev 0cdf2a8ebd fix: resolve CI workflow failures
- Remove emoji characters from README.md to pass ASCII check
- Fix typo in chatwidget.rs: numer -> number for codespell check

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-12 15:02:14 +10:00
James PeterandHanzo Dev ecd910c449 docs: update README with enhanced fork features and clean formatting
- Remove all OpenAI references and fix typos (coderr -> coder)
- Highlight key improvements over upstream:
  - Browser integration (CDP/headless)
  - Multi-agent commands (/plan, /solve, /code)
  - Theme system (/themes)
  - Reasoning control (/reasoning)
- Add comprehensive legal section with responsible use guidelines
- Improve structure and markdown formatting
- Update branding to @just-every/coder

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-12 14:51:57 +10:00
James Peter 5465564fe1 Merge remote-tracking branch 'origin/main' into coder-release 2025-08-11 21:52:00 +10:00
James Peter e88aebf24f feat: add coder fork enhancements - mouse scrolling, glitch animation, and improved TUI 2025-08-11 21:51:46 +10:00
James Peter 1a0c5d4ede Merge upstream/main into temp-main, keeping upstream content structure with fork installation info 2025-08-11 21:50:32 +10:00
Michael BolinandGitHub 0d0fbece82 docs: update the docs to explain how to authenticate on a headless machine (#2121)
Users on "headless" machines, such as WSL users, are understandable
having trouble authenticating successfully. To date, I have been
providing one-off user support on issues such as
https://github.com/openai/codex/issues/2000, but we need a more detailed
explanation that we can link to so that users can self-serve. This PR
aims to provide detailed information that we can link to in response to
user issues going forward.

That said, it would also be helpful if we employed heuristics to detect
this issue at runtime, and/or we should just link to these docs as part
of the `codex login` flow.
2025-08-10 14:19:27 -07:00
James Peter 43838b039f docs: completely rewrite README for Code CLI fork
- Clean, focused documentation for the enhanced fork
- Clear installation instructions with npm package name
- Highlight key features and enhancements
- Add comprehensive usage examples
- Include troubleshooting and development sections
- Add comparison table with original Codex
- Remove outdated content and simplify structure
2025-08-10 16:18:06 +10:00
James Peter 8b24570ce0 docs: update README with installation instructions for Code CLI fork
- Add clear branding as enhanced fork of OpenAI Codex
- Highlight new features (image support, /reasoning command)
- Provide npm installation instructions for @just-every/code
- Explain configuration directory behavior
2025-08-10 16:16:23 +10:00
aibrahim-oaiandGitHub e1c5b49668 Show ChatGPT login URL during onboarding (#2028)
## Summary
- display authentication URL in the ChatGPT sign-in screen while
onboarding

<img width="684" height="151" alt="image"
src="https://github.com/user-attachments/assets/a8c32cb0-77f6-4a3f-ae3b-6695247c994d"
/>
2025-08-09 01:30:34 +00:00
DylanandGitHub 55e9040cc2 Update README.md (#1989)
Updates the README to clarify auth vs. api key behavior.
2025-08-08 15:19:20 -07:00
Ed BayesandGitHub 7f9a478055 update readme (#1948)
Co-authored-by: Hanzo Dev <[email protected]>
2025-08-07 11:20:53 -07:00
Michael BolinandGitHub 90a91bdd07 fix: README ToC did not match contents (#1857)
Similar to https://github.com/openai/codex/pull/1855, this got through.

Fixed by running:

```
python3 scripts/readme_toc.py --fix README.md
```
2025-08-05 11:48:28 -07:00
Michael BolinandGitHub ba2e339eb5 fix: clean out some ASCII (#1856)
Similar to https://github.com/openai/codex/pull/1855, this got through.

Fixed by running:

```
./scripts/asciicheck.py README.md
```
2025-08-05 11:44:04 -07:00
easong-openaiandGitHub 352baee086 Introduce --oss flag to use gpt-oss models (#1848)
This adds support for easily running Codex backed by a local Ollama
instance running our new open source models. See
https://github.com/openai/gpt-oss for details.

If you pass in `--oss` you'll be prompted to install/launch ollama, and
it will automatically download the 20b model and attempt to use it.

We'll likely want to expand this with some options later to make the
experience smoother for users who can't run the 20b or want to run the
120b.

Co-authored-by: Hanzo Dev <[email protected]>
2025-08-05 11:31:11 -07:00
pakrym-oaiandGitHub 7f5c81540b Add login status command (#1716)
Print the current login mode, sanitized key and return an appropriate
status.
2025-07-30 14:09:26 -07:00
Michael BolinandGitHub 007f91980b feat: add support for --sandbox flag (#1476)
On a high-level, we try to design `config.toml` so that you don't have
to "comment out a lot of stuff" when testing different options.

Previously, defining a sandbox policy was somewhat at odds with this
principle because you would define the policy as attributes of
`[sandbox]` like so:

```toml
[sandbox]
mode = "workspace-write"
writable_roots = [ "/tmp" ]
```

but if you wanted to temporarily change to a read-only sandbox, you
might feel compelled to modify your file to be:

```toml
[sandbox]
mode = "read-only"
# mode = "workspace-write"
# writable_roots = [ "/tmp" ]
```

Technically, commenting out `writable_roots` would not be strictly
necessary, as `mode = "read-only"` would ignore `writable_roots`, but
it's still a reasonable thing to do to keep things tidy.

Currently, the various values for `mode` do not support that many
attributes, so this is not that hard to maintain, but one could imagine
this becoming more complex in the future.

In this PR, we change Codex CLI so that it no longer recognizes
`[sandbox]`. Instead, it introduces a top-level option, `sandbox_mode`,
and `[sandbox_workspace_write]` is used to further configure the sandbox
when when `sandbox_mode = "workspace-write"` is used:

```toml
sandbox_mode = "workspace-write"

[sandbox_workspace_write]
writable_roots = [ "/tmp" ]
```

This feels a bit more future-proof in that it is less tedious to
configure different sandboxes:

```toml
sandbox_mode = "workspace-write"

[sandbox_read_only]
# read-only options here...

[sandbox_workspace_write]
writable_roots = [ "/tmp" ]

[sandbox_danger_full_access]
# danger-full-access options here...
```

In this scheme, you never need to comment out the configuration for an
individual sandbox type: you only need to redefine `sandbox_mode`.

Relatedly, previous to this change, a user had to do `-c
sandbox.mode=read-only` to change the mode on the command line. With
this change, things are arguably a bit cleaner because the equivalent
option is `-c sandbox_mode=read-only` (and now `-c
sandbox_workspace_write=...` can be set separately).

Though more importantly, we introduce the `-s/--sandbox` option to the
CLI, which maps directly to `sandbox_mode` in `config.toml`, making
config override behavior easier to reason about. Moreover, as you can
see in the updates to the various Markdown files, it is much easier to
explain how to configure sandboxing when things like `--sandbox
read-only` can be used as an example.

Relatedly, this cleanup also made it straightforward to add support for
a `sandbox` option for Codex when used as an MCP server (see the changes
to `mcp-server/src/codex_tool_config.rs`).

Fixes https://github.com/openai/codex/issues/1248.
2025-07-07 22:31:30 -07:00
Michael BolinandGitHub f9c0f234c1 docs: update README to include npm install again (#1475)
v0.2.0 of https://www.npmjs.com/package/@openai/codex now runs the Rust
CLI, so it makes sense to bring back the instructions to use `npm i -g
@openai/codex`.

In most places, I list `npm install` before `brew install` because I
believe `npm` is more readily available, though I in the more detailed
part of the documentation, I note that `brew install` will download
fewer bytes, and in that sense, is preferred.
2025-07-07 17:44:26 -07:00
Michael BolinandGitHub 49b5adae82 docs: update documentation to reflect Rust CLI release (#1440)
As promised on https://github.com/openai/codex/discussions/1405, we are
making the first official release of the Rust CLI as v0.2.0. As part of
this move, we are making it available in Homebrew:

https://github.com/Homebrew/homebrew-core/pull/228615

Ultimately, we also plan to continue to make the CLI available in npm,
as well, though brew is a bit nicer in that `brew install` will download
only the binary for your platform whereas an npm module is expected to
contain the binaries for _all_ supported platforms, so it is a bit more
heavyweight.

A big part of this change is updating the root `README.md` to document
the behavior of the Rust CLI, which differs in a number of ways from the
TypeScript CLI. The existing `README.md` is moved to
`codex-cli/README.md` as part of this PR, as it is still applicable to
that folder.

As this is still early days for the Rust CLI, I encourage folks to
provide feedback on the command line flags and configuration options.
2025-07-01 15:00:31 -07:00
Eric WrightandGitHub ce2fb55bec add: responses api support for azure (#1321)
- Use Responses API for Azure provider endpoints
- Added a unit test to catch regression on the change from
`/chat/completions` to `/responses`
- Updated the default AOAI api version from `2025-03-01-preview` to
`2025-04-01-preview` to avoid user/400 errors due to missing summary
support in the March API version.
- Changes have been tested locally on AOAI endpoints
2025-06-22 18:01:13 -07:00
AdeebandGitHub f61670d211 restructure flake for codex-rs (#888)
Right now since the repo is having two different implementations of
codex, flake was updated to work with both typescript implementation and
rust implementation
2025-05-13 13:08:42 -07:00
Michael BolinandGitHub 49f65c5532 chore: introduce new --native flag to Node module release process (#844)
This PR introduces an optional build flag, `--native`, that will build a
version of the Codex npm module that:

- Includes both the Node.js and native Rust versions (for Mac and Linux)
- Will run the native version if `CODEX_RUST=1` is set
- Runs the TypeScript version otherwise

Note this PR also updates the workflow URL to
https://github.com/openai/codex/actions/runs/14872557396, as that is a
build from today that includes everything up through
https://github.com/openai/codex/pull/843.

Test Plan:

In `~/code/codex/codex-cli`, I ran:

```
pnpm stage-release --native
```

The end of the output was:

```
Staged version 0.1.2505121317 for release in /var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.xd2p5ETYGN
Test Node:
    node /var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.xd2p5ETYGN/bin/codex.js --help
Test Rust:
    CODEX_RUST=1 node /var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.xd2p5ETYGN/bin/codex.js --help
Next:  cd "/var/folders/wm/f209bc1n2bd_r0jncn9s6j_00000gp/T/tmp.xd2p5ETYGN" && npm publish --tag native
```

I verified that running each of these commands ran the expected version
of Codex.

While here, I also added `bin` to the `files` list in `package.json`,
which should have been done as part of
https://github.com/openai/codex/pull/757, as that added new entries to
`bin` that were matched by `.gitignore` but should have been included in
a release.
2025-05-12 13:38:10 -07:00
PranavandGitHub f6745d9c18 feat: added arceeai as a provider (#818)
- Added ArceeAI as a provider  - https://conductor.arcee.ai/v1
- Compatible with ArceeAI SLMs (Virtuoso, Maestro)
- Works with ArceeAI's Conductor auto‑router models (auto, auto‑tool),
once #817 is merged
2025-05-10 16:16:28 -07:00