868 Commits
Author SHA1 Message Date
zeekay ae2f901ec0 merge: just-every/code upstream/main (preserve Hanzo brand)
# Conflicts:
#	.github/pull_request_template.md
#	.github/workflows/Dockerfile.bazel
#	.github/workflows/bazel.yml
#	.github/workflows/cargo-deny.yml
#	.github/workflows/ci.yml
#	.github/workflows/close-stale-contributor-prs.yml
#	.github/workflows/codespell.yml
#	.github/workflows/issue-deduplicator.yml
#	.github/workflows/issue-labeler.yml
#	.github/workflows/rust-ci-full.yml
#	.github/workflows/rust-ci.yml
#	.github/workflows/rust-release-prepare.yml
#	.github/workflows/rust-release-windows.yml
#	.github/workflows/rust-release-zsh.yml
#	.github/workflows/rust-release.yml
#	.github/workflows/sdk.yml
#	.vscode/extensions.json
#	.vscode/settings.json
#	AGENTS.md
#	AGENTS.md~upstream_main
#	NOTICE
#	code-rs/app-server-protocol/schema/json/DynamicToolCallParams.json
#	code-rs/app-server-protocol/schema/json/v2/ErrorNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ItemCompletedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ItemStartedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ReviewStartResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadListResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadReadResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadRollbackResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadStartedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadUnarchiveResponse.json
#	code-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/TurnStartResponse.json
#	code-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json
#	code-rs/app-server-protocol/schema/typescript/CodexErrorInfo.ts
#	code-rs/app-server-protocol/schema/typescript/DynamicToolCallRequest.ts
#	code-rs/app-server-protocol/schema/typescript/TurnItem.ts
#	code-rs/app-server-protocol/schema/typescript/v2/CodexErrorInfo.ts
#	code-rs/app-server-protocol/schema/typescript/v2/DynamicToolCallParams.ts
#	code-rs/app-server-protocol/schema/typescript/v2/DynamicToolSpec.ts
#	code-rs/app-server-protocol/schema/typescript/v2/ThreadItem.ts
#	code-rs/app-server-protocol/schema/typescript/v2/ToolsV2.ts
#	code-rs/app-server-protocol/src/protocol/thread_history.rs
#	code-rs/code-version/Cargo.toml
#	code-rs/core/src/http_client.rs
#	code-rs/tui/src/bottom_pane/auto_drive_settings_view.rs
#	codex-cli/scripts/build_npm_package.py
#	docs/contributing.md
#	hanzo-dev/chatgpt/src/chatgpt_token.rs
#	hanzo-dev/tui/src/clipboard_copy.rs
#	scripts/codex_package/archive.py
#	scripts/codex_package/cargo.py
#	scripts/codex_package/cli.py
#	scripts/codex_package/layout.py
#	scripts/codex_package/test_cargo.py
#	scripts/codex_package/v8.py
#	scripts/stage_npm_packages.py
2026-06-01 18:52:56 -07:00
zeekay 4fe4cdd41c merge: openai/codex master (preserve Hanzo brand)
# Conflicts:
#	.github/pull_request_template.md
#	.github/workflows/rust-release-zsh.yml
#	.vscode/extensions.json
#	AGENTS.md
#	AGENTS.md~openai-upstream_main
#	codex-cli/.pack/package/bin/rg
#	codex-cli/bin/rg
#	codex-rs/app-server-protocol/src/protocol/v2.rs
#	codex-rs/app-server/src/codex_message_processor.rs
#	codex-rs/core/src/codex.rs
#	codex-rs/core/src/model_provider_info_tests.rs
#	codex-rs/core/src/models_manager/manager.rs
#	codex-rs/core/src/models_manager/manager_tests.rs
#	codex-rs/core/src/tools/handlers/multi_agents_v2/assign_task.rs
#	codex-rs/core/src/tools/spec_tests.rs
#	codex-rs/debug-client/Cargo.toml
#	codex-rs/debug-client/src/client.rs
#	codex-rs/debug-client/src/output.rs
#	codex-rs/debug-client/src/reader.rs
#	codex-rs/tools/src/agent_tool.rs
#	codex-rs/tools/src/agent_tool_tests.rs
#	codex-rs/tui/src/history_cell.rs
#	codex-rs/vendor/bubblewrap/NEWS.md
#	codex-rs/vendor/bubblewrap/README.md
#	codex-rs/vendor/bubblewrap/SECURITY.md
#	codex-rs/vendor/bubblewrap/bubblewrap.c
#	codex-rs/vendor/bubblewrap/meson.build
#	codex-rs/vendor/bubblewrap/meson_options.txt
#	codex-rs/vendor/bubblewrap/network.c
#	codex-rs/vendor/bubblewrap/release-checklist.md
#	codex-rs/vendor/bubblewrap/utils.c
#	codex-rs/windows-sandbox-rs/src/setup_orchestrator.rs
#	docs/contributing.md
#	scripts/codex_package/rg
2026-06-01 18:52:12 -07:00
GitHub Action 352af3a0d3 chore(release): 0.6.101 [skip ci] 2026-05-31 11:14:48 +00:00
GitHub Action 98dfb343d6 chore(release): 0.6.100 [skip ci] 2026-05-29 03:52:16 +00:00
GitHub Action 9a9d55d5f5 chore(release): 0.6.99 [skip ci] 2026-05-23 20:19:47 +00:00
Michael BolinandGitHub 23fb8118a3 npm: remove legacy package artifact synthesis (#23836)
## Why

`rust-release` now publishes `codex-package-<target>.tar.gz` as the
canonical native package payload. npm staging should consume those
archives directly instead of keeping legacy synthesis code that fetched
`rg`, copied standalone binaries, and rebuilt an approximate package
layout.

That also means the package builder should not know the internal shape
of `codex-package`. It should extract and copy the target payload
wholesale so future layout changes stay localized to the archive
producer.

The release job stages `codex`, `codex-responses-api-proxy`, and
`codex-sdk` together, so native artifact download should be filtered,
observable, and shared across component installs. Since that native
hydration is now only used by release staging, keeping a separate
`install_native_deps.py` CLI adds an extra wrapper without a real
caller.

## What Changed

- Removed legacy `codex-package` synthesis and related compatibility
flags from npm staging.
- Folded the remaining native artifact hydration code into
`scripts/stage_npm_packages.py` and deleted
`codex-cli/scripts/install_native_deps.py`.
- Made platform package staging copy the full extracted target directory
instead of enumerating package entries.
- Kept non-`codex-package` native components under their component
directory name instead of using a legacy destination map.
- Split native staging by component set while sharing one
workflow-artifact cache across the invocation.
- Changed workflow artifact download to select target artifacts by name,
print sizes/progress, and reuse cached artifacts.
- Removed the implicit `CI=true` default from `build_npm_package.py`;
local CI-shaped runs should set that environment explicitly.
- Kept `npm pack` cache/log output in its temporary directory so packing
does not write to the user npm cache.

## Verification

- `python3 -m py_compile scripts/stage_npm_packages.py
codex-cli/scripts/build_npm_package.py`
- `python3 -m unittest discover -s scripts/codex_package -p "test_*.py"`
- `scripts/stage_npm_packages.py --help`
- `codex-cli/scripts/build_npm_package.py --help`
- Ran the release-shaped staging command from `rust-release.yml` against
workflow run https://github.com/openai/codex/actions/runs/26240748758
with `CI=true` set locally to match GitHub Actions:

```sh
CI=true python3 ./scripts/stage_npm_packages.py \
  --release-version 0.133.0 \
  --workflow-url https://github.com/openai/codex/actions/runs/26240748758 \
  --package codex \
  --package codex-responses-api-proxy \
  --package codex-sdk
```

That completed successfully, downloaded only the six target artifacts
once, reused the cache for `codex-responses-api-proxy`, and produced all
nine npm tarballs. Generated tarballs and staging/artifact temp dirs
were cleaned afterward.
2026-05-21 20:43:48 +00:00
Michael BolinandGitHub 73d59fd83d packaging: move rg manifest out of npm bin (#23833)
## Why

Installing `@openai/codex` currently places a Dotslash `rg` manifest at
`node_modules/@openai/codex/bin/rg`, even though the native optional
dependency already ships the actual helper under
`vendor/<target>/codex-path/rg`. The launcher prepends that `codex-path`
directory, so the top-level `bin/rg` file is redundant in the npm
install.

The remaining direct consumers of the manifest are package-building
paths: `scripts/codex_package/ripgrep.py` and
`codex-cli/scripts/install_native_deps.py`. Keeping the manifest under
`codex-cli/bin` makes it look like a shipped npm binary, so this moves
it next to the package-builder code that owns it. The checked-in
`@openai/codex` package metadata should likewise describe only the meta
package payload; generated platform packages continue to publish
`vendor`.

## What Changed

- Moved the Dotslash ripgrep manifest from `codex-cli/bin/rg` to
`scripts/codex_package/rg`.
- Updated the package builder, npm native-artifact hydrator, README, and
CLI help text to reference the new manifest location.
- Stopped `codex-cli/scripts/build_npm_package.py` from copying `rg`
into the `@openai/codex` meta package.
- Narrowed the checked-in meta package `files` whitelist to
`bin/codex.js`.

## Verification

- `python3 -m unittest discover -s scripts/codex_package -p "test_*.py"`
- `python3 -m unittest discover -s codex-cli/scripts -p "test_*.py"`
- `python3 -m py_compile codex-cli/scripts/build_npm_package.py
codex-cli/scripts/install_native_deps.py
scripts/codex_package/ripgrep.py scripts/codex_package/cli.py
scripts/stage_npm_packages.py`
- `codex-cli/scripts/build_npm_package.py --package codex --version
0.0.0-test --pack-output <tmp>/codex-meta-no-vendor.tgz`
- `tar -tf <tmp>/codex-meta-no-vendor.tgz` showed only
`package/bin/codex.js`, `package/package.json`, and `package/README.md`.
- Direct staging check showed `codex` uses `files: ["bin/codex.js"]`
while `codex-darwin-arm64` still uses `files: ["vendor"]`.

---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/23833).
* #23836
* __->__ #23833
2026-05-21 15:48:42 +00:00
Michael BolinandGitHub 204961fd9c docs: add description to codex-cli/package.json (#23835)
Fix this eyesore where our lack of a `"description"` was causing our
`README.md` to be used for previews on npm.

<img width="1291" height="178" alt="image"
src="https://github.com/user-attachments/assets/a9bc08c5-0def-4755-8bcc-0c90e096b9c2"
/>
2026-05-21 08:19:50 -07:00
Michael BolinandGitHub 5276a68a46 npm: ship platform packages in Codex package layout (#23637)
## Summary

The npm platform packages should stop carrying a bespoke native layout
now that the release workflow builds canonical Codex package archives.
Keeping npm on the same `bin/`, `codex-resources/`, and `codex-path/`
structure lets the Rust package-layout detection behave consistently
across standalone, npm, and future DotSlash installs.

This changes platform npm packages to stage the `codex-package` artifact
for each target under `vendor/<target>`. The Node launcher now resolves
`bin/codex` and prepends `codex-path`, while retaining legacy
`vendor/<target>/codex` and `vendor/<target>/path` fallback support for
local development and migration. The npm staging helper downloads
`codex-package` archives instead of rebuilding the CLI payload from
individual `codex`, `rg`, `bwrap`, and sandbox helper artifacts.

CI still needs to stage npm packages from historical rust-release
workflow artifacts that predate package archives, so the staging scripts
expose an explicit `--allow-legacy-codex-package` fallback. That
fallback synthesizes the canonical package layout from legacy per-binary
artifacts and is wired only into the CI smoke path; release staging
remains strict and continues to require real package archives.

For direct local use, `install_native_deps.py` now points its built-in
default workflow at the same recent artifact run used by CI and
automatically enables legacy package synthesis only when
`--workflow-url` is omitted. Explicit workflow URLs remain strict unless
callers opt in with `--allow-legacy-codex-package`.

## Test plan

- `python3 -m py_compile codex-cli/scripts/build_npm_package.py
codex-cli/scripts/install_native_deps.py scripts/stage_npm_packages.py
scripts/codex_package/cli.py`
- `node --check codex-cli/bin/codex.js`
- `ruby -e 'require "yaml";
YAML.load_file(".github/workflows/rust-release.yml");
YAML.load_file(".github/workflows/ci.yml"); puts "ok"'`
- Staged a synthetic `codex-linux-x64` platform package from a canonical
vendor tree and verified it copied only `bin/`, `codex-path/`,
`codex-resources/`, and `codex-package.json`.
- Imported `install_native_deps.py` and extracted a synthetic
`codex-package-x86_64-unknown-linux-musl.tar.gz` into `vendor/<target>`.
- Ran legacy-layout conversion smokes for Linux, Windows, and unsigned
macOS artifact naming.
- Ran a synthetic `install_native_deps.py` default-workflow smoke that
verifies legacy package synthesis is automatic only when
`--workflow-url` is omitted.
- `NPM_CONFIG_CACHE="$tmp_dir/npm-cache" python3
./scripts/stage_npm_packages.py --release-version 0.125.0 --workflow-url
https://github.com/openai/codex/actions/runs/26131514935 --package codex
--allow-legacy-codex-package --output-dir "$tmp_dir"`
- `node codex-cli/bin/codex.js --version`


---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/23637).
* #23638
* __->__ #23637
2026-05-20 12:02:32 -07:00
Felipe CouryandGitHub 1e793ce4c3 feat(cli): add codex doctor diagnostics (#22336)
## Why

Users and support need a single command that captures the local Codex
runtime, configuration, auth, terminal, network, and state shape without
asking the user to know which diagnostic depth to choose first. `codex
doctor` now runs the useful checks by default and makes the detailed
human output the default because the command is usually run when someone
already needs context.

The command also targets concrete support failure modes we have seen
while iterating on the design:

- update-target mismatches like #21956, where the installed package
manager target can differ from the running executable
- terminal and multiplexer issues that depend on `TERM`, tmux/zellij
state, color handling, and TTY metadata
- provider-specific HTTP/WebSocket connectivity, including ChatGPT
WebSocket handshakes and API-key/provider endpoint reachability
- local state/log SQLite integrity problems and large rollout
directories
- feedback reports that need an attached, redacted diagnostic snapshot
without asking the user to run a second command

## What Changed

- Adds `codex doctor` as a grouped CLI diagnostic report with default
detailed output and `--summary` for the compact view.
- Adds stable report sections for Environment, Configuration, Updates,
Connectivity, and Background Server, plus a top Notes block that
promotes anomalies such as available updates, large rollout directories,
optional MCP issues, and mixed auth signals.
- Adds runtime provenance, install consistency, bundled/system search
readiness, terminal/multiplexer metadata, `config.toml` parse status,
auth mode details, sandbox details, feature flag summaries, update
cache/latest-version state, app-server daemon state, SQLite integrity
checks, rollout statistics, and provider-aware network diagnostics.
- Adds ChatGPT WebSocket diagnostics that report the negotiated HTTP
upgrade as `HTTP 101 Switching Protocols` and include timeout, DNS,
auth, and provider context in detailed output.
- Makes reachability provider-aware: API-key OpenAI setups check the API
endpoint, ChatGPT auth checks the ChatGPT path, and custom/AWS/local
providers check configured HTTP endpoints when available.
- Adds structured, redacted JSON output where `checks` is keyed by check
id and `details` is a key/value object for support tooling.
- Integrates doctor with feedback uploads by attaching a best-effort
`codex-doctor-report.json` report and adding derived Sentry tags for
overall status and failing/warning checks.
- Updates the TUI feedback consent copy so users can see that the doctor
report is included when logs/diagnostics are uploaded.
- Updates the CLI bug issue template to ask reporters for `codex doctor
--json` and render pasted reports as JSON.

## Example Output

The examples below are sanitized from local smoke runs with `--no-color`
so the structure is reviewable in plain text.

### `codex doctor`

```text
Codex Doctor v0.0.0 · macos-aarch64

Notes
   ↑ updates      0.130.0 available (current 0.0.0, dismissed 0.128.0)
   ⚠ rollouts     1,526 active files · 2.53 GB on disk
   âš  mcp          MCP configuration has optional issues
   âš  auth         mixed auth signals: ChatGPT login plus API key env var; HTTP reachability uses API-key mode
─────────────────────────────────────────────────────────────

Environment
  ✓ runtime      local debug build
      version                  0.0.0
      install method           other
      commit                   unknown
      executable               ~/code/codex.fcoury-doct…x-rs/target/debug/codex
  ✓ install      consistent
      context                  other
      managed by               npm: no · bun: no · package root —
      PATH entries (2)         ~/.local/share/mise/installs/node/24/bin/codex
                               ~/.local/share/mise/shims/codex
  ✓ search       ripgrep 15.1.0 (system, `rg`)
  ✓ terminal     Ghostty 1.3.2-main-+b0f827665 · tmux 3.6a · TERM=xterm-256color
      terminal                 Ghostty
      TERM_PROGRAM             ghostty
      terminal version         1.3.2-main-+b0f827665
      TERM                     xterm-256color
      multiplexer              tmux 3.6a
      tmux extended-keys       on
      tmux allow-passthrough   on
      tmux set-clipboard       on
  ✓ state        databases healthy
      CODEX_HOME               ~/.codex (dir)
      state DB                 ~/.codex/state_5.sqlite (file) · integrity ok
      log DB                   ~/.codex/logs_2.sqlite (file) · integrity ok
      active rollouts          1,526 files · 2.53 GB (avg 1.70 MB)
      archived rollouts        8 files · 3.84 MB (avg 491.11 KB)

Configuration
  ✓ config       loaded
      model                    gpt-5.5 · openai
      cwd                      ~/code/codex.fcoury-doctor/codex-rs
      config.toml              ~/.codex/config.toml
      config.toml parse        ok
      MCP servers              1
      feature flags            36 enabled · 7 overridden (full list with --all)
      overrides                code_mode, code_mode_only, memories, chronicle, goals, remote_control, prevent_idle_sleep
  ✓ auth         auth is configured
      auth storage mode        File
      auth file                ~/.codex/auth.json
      auth env vars present    OPENAI_API_KEY
      stored auth mode         chatgpt
      stored API key           false
      stored ChatGPT tokens    true
      stored agent identity    false
  ⚠ mcp          MCP configuration has optional issues — Set the missing MCP env vars or disable the affected server.
      configured servers       1
      disabled servers         0
      streamable_http servers  1
      optional reachability    openaiDeveloperDocs: https://developers.openai.com/mcp (HEAD connect failed; GET connect failed)
  ✓ sandbox      restricted fs + restricted network · approval OnRequest
      approval policy          OnRequest
      filesystem sandbox       restricted
      network sandbox          restricted

Connectivity
  ✓ network      network-related environment looks readable
  ✓ websocket    connected (HTTP 101 Switching Protocols) · 15s timeout
      model provider           openai
      provider name            OpenAI
      wire API                 responses
      supports websockets      true
      connect timeout          15000 ms
      auth mode                chatgpt
      endpoint                 wss://chatgpt.com/backend-api/<redacted>
      DNS                      2 IPv4, 2 IPv6, first IPv6
      handshake result         HTTP 101 Switching Protocols
  ✗ reachability one or more required provider endpoints are unreachable over HTTP — Check proxy, VPN, firewall, DNS, and custom CA configuration.
      reachability mode        API key auth
      openai API               https://api.openai.com/v1 connect failed (required)

Background Server
  â—‹ app-server   not running (ephemeral mode)

─────────────────────────────────────────────────────────────
11 ok · 1 idle · 4 notes · 1 warn · 1 fail failed

--summary compact output           --all expand truncated lists
--json redacted report
```

### `codex doctor --summary`

```text
Codex Doctor v0.0.0 · macos-aarch64

Notes
   ↑ updates      0.130.0 available (current 0.0.0, dismissed 0.128.0)
   ⚠ rollouts     1,526 active files · 2.53 GB on disk
   âš  mcp          MCP configuration has optional issues
   âš  auth         mixed auth signals: ChatGPT login plus API key env var; HTTP reachability uses API-key mode
─────────────────────────────────────────────────────────────

Environment
  ✓ runtime      local debug build
  ✓ install      consistent
  ✓ search       ripgrep 15.1.0 (system, `rg`)
  ✓ terminal     Ghostty 1.3.2-main-+b0f827665 · tmux 3.6a · TERM=xterm-256color
  ✓ state        databases healthy

Configuration
  ✓ config       loaded
  ✓ auth         auth is configured
  ⚠ mcp          MCP configuration has optional issues — Set the missing MCP env vars or disable the affected server.
  ✓ sandbox      restricted fs + restricted network · approval OnRequest

Updates
  ✓ updates      update configuration is locally consistent

Connectivity
  ✓ network      network-related environment looks readable
  ✓ websocket    connected (HTTP 101 Switching Protocols) · 15s timeout
  ✗ reachability one or more required provider endpoints are unreachable over HTTP — Check proxy, VPN, firewall, DNS, and custom CA configuration.

Background Server
  â—‹ app-server   not running (ephemeral mode)

─────────────────────────────────────────────────────────────
11 ok · 1 idle · 4 notes · 1 warn · 1 fail failed

Run codex doctor without --summary for detailed diagnostics.
--all expand truncated lists       --json redacted report
```

### `codex doctor --json` shape

```json
{
  "schema_version": 1,
  "overall_status": "fail",
  "checks": {
    "runtime.provenance": {
      "id": "runtime.provenance",
      "category": "Environment",
      "status": "ok",
      "summary": "local debug build",
      "details": {
        "version": "0.0.0",
        "install method": "other",
        "commit": "unknown"
      }
    },
    "sandbox.helpers": {
      "id": "sandbox.helpers",
      "category": "Configuration",
      "status": "ok",
      "summary": "restricted fs + restricted network · approval OnRequest",
      "details": {
        "approval policy": "OnRequest",
        "filesystem sandbox": "restricted",
        "network sandbox": "restricted"
      }
    }
  }
}
```

### `/feedback` new sentry attachment

<img width="938" height="798" alt="CleanShot 2026-05-13 at 15 36 14"
src="https://github.com/user-attachments/assets/715e62e0-d7b4-4fea-a35a-fd5d5d33c4c0"
/>

### New section in CLI issue template

<img width="1164" height="435" alt="CleanShot 2026-05-13 at 15 47 24"
src="https://github.com/user-attachments/assets/9081dc25-a28c-4afa-8ba1-e299c2b4031d"
/>

## How to Test

1. Run `cargo run --bin codex -- doctor --no-color`.
2. Confirm the detailed report is the default and includes promoted
Notes, grouped sections, terminal details, state DB integrity, rollout
stats, provider reachability, WebSocket diagnostics, and app-server
status.
3. Run `cargo run --bin codex -- doctor --summary --no-color`.
4. Confirm the compact view keeps the same sections and summary counts
but omits detailed key/value rows.
5. Run `cargo run --bin codex -- doctor --json`.
6. Confirm the output is redacted JSON, `checks` is an object keyed by
check id, and each check's `details` is a key/value object.
7. Preview the CLI bug issue template and confirm the `Codex doctor
report` field appears after the terminal field, asks for `codex doctor
--json`, and renders pasted output as JSON.
8. Start a feedback flow that includes logs.
9. Confirm the upload consent copy lists `codex-doctor-report.json`
alongside the log attachments.

Targeted tests:

- `cargo test -p codex-cli doctor`
- `cargo test -p codex-app-server
doctor_report_tags_summarize_status_counts`
- `cargo test -p codex-feedback`
- `cargo test -p codex-tui feedback_view`
- `just argument-comment-lint`
- `git diff --check`
2026-05-13 21:23:19 +00:00
GitHub Action 38163e3131 chore(release): 0.6.98 [skip ci] 2026-05-08 14:04:58 +00:00
Michael BolinandGitHub ac15436db9 release/npm: bundle standalone bwrap on Linux (#21257) 2026-05-05 18:21:52 -07:00
GitHub Action eb1d13e946 chore(release): 0.6.97 [skip ci] 2026-05-01 13:07:31 +00:00
James Peter 100cb4e3bf Merge branch 'main' of https://github.com/just-every/code 2026-05-01 22:16:13 +10:00
James Peter 2a674e9de5 Merge upstream/main: refresh upstream history 2026-05-01 20:51:06 +10:00
Dylan HurdandGitHub 56bcbe63f3 chore(cli) deprecate --full-auto (#20133)
## Summary
Starts the process of getting rid of `--full-auto`, with some
concessions:
1. Fully removes the command from the tui, since it just resolves to the
default permissions there, and encourages users to use the one-time
trust flow if they're not in a trusted repo.
2. Marks the command as deprecated in `codex exec`, in case users are
actively relying on this. We'll remove in an upcoming n+X release.
3. Cleans up some of the `codex sandbox` cli logic, to keep supporting
legacy sandbox policies for now.

This isn't the cleanest setup, but I think it is worthwhile to warn
users for one release before hard-removing it.

## Testing 
- [x] Updated unit tests
2026-04-29 04:41:30 +00:00
GitHub Action f29e83c18f chore(release): 0.6.96 [skip ci] 2026-04-26 03:30:59 +00:00
GitHub Action 8529f414a1 chore(release): 0.6.95 [skip ci] 2026-04-25 13:25:52 +00:00
James Peter 434b6c6273 Merge origin/main: adopt release metadata updates 2026-04-25 22:01:14 +10:00
James Peter 8d39ffcb77 Merge upstream/main: keep local docs and workflows 2026-04-25 09:29:31 +10:00
mcgrew-oaiandGitHub 256bef793e Harden package-manager install policy (#19163)
## Summary

This PR hardens package-manager usage across the repo to reduce
dependency supply-chain risk. It also removes the stale `codex-cli`
Docker path, which was already broken on `main`, instead of keeping a
bitrotted container workflow alive.

## What changed

- Updated pnpm package manager pins and workspace install settings.
- Removed stale `codex-cli` Docker assets instead of trying to keep a
broken local container path alive.
- Added uv settings and lockfiles for the Python SDK packages.
- Updated Python SDK setup docs to use `uv sync`.

## Why

This is primarily a security hardening change. It reduces
package-install and supply-chain risk by ensuring dependency installs go
through pinned package managers, committed lockfiles, release-age
settings, and reviewed build-script controls.

For `codex-cli`, the right follow-up was to remove the local Docker path
rather than keep patching it:

- `codex-cli/Dockerfile` installed `codex.tgz` with `npm install -g`,
which bypassed the repo lockfile and age-gated pnpm settings.
- The local `codex-cli/scripts/build_container.sh` helper was already
broken on `main`: it called `pnpm run build`, but
`codex-cli/package.json` does not define a `build` script.
- The container path itself had bitrotted enough that keeping it would
require extra packaging-specific behavior that was not otherwise needed
by the repo.

## Gaps addressed

- Global npm installs bypassed the repo lockfile in Docker and CLI
reinstall paths, including `codex-cli/Dockerfile` and
`codex-cli/bin/codex.js`.
- CI and Docker pnpm installs used `--frozen-lockfile`, but the repo was
missing stricter pnpm workspace settings for dependency build scripts.
- Python SDK projects had `pyproject.toml` metadata but no committed
`uv.lock` coverage or uv age/index settings in `sdk/python` and
`sdk/python-runtime`.
- The secure devcontainer install path used npm/global install behavior
without a local locked package-manager boundary.
- The local `codex-cli` Docker helper was already broken on `main`, so
this PR removes that stale Docker path instead of preserving a broken
surface.
- pnpm was already pinned, but not to the current repo-wide pnpm version
target.

## Verification

- `pnpm install --frozen-lockfile`
- `.devcontainer/codex-install`: `pnpm install --prod --frozen-lockfile`
- `.devcontainer/codex-install`: `./node_modules/.bin/codex --version`
- `sdk/python`: `uv lock --check`, `uv sync --locked --all-extras
--dry-run`, `uv build`
- `sdk/python-runtime`: `uv lock --check`, `uv sync --locked --dry-run`,
`uv build --wheel`
- `pnpm -r --filter ./sdk/typescript run build`
- `pnpm -r --filter ./sdk/typescript run lint`
- `pnpm -r --filter ./sdk/typescript run test`
- `node --check codex-cli/bin/codex.js`
- `docker build -f .devcontainer/Dockerfile.secure -t codex-secure-test
.`
- `cargo build -p codex-cli`
- repo-wide package-manager audit
2026-04-24 14:36:19 -04:00
GitHub Action b5e321ee3d chore(release): 0.6.94 [skip ci] 2026-04-22 05:42:24 +00:00
GitHub Action db230f5900 chore(release): 0.6.93 [skip ci] 2026-04-17 06:39:52 +00:00
Eric TrautandGitHub 63f8b7d627 Remove obsolete codex-cli README (#17096)
Problem: codex-cli/README.md is obsolete and confusing to keep around.

Solution: Delete codex-cli/README.md so the stale README is no longer
present in the repository.
2026-04-08 00:18:23 -07:00
GitHub Action 253f17185b chore(release): 0.6.92 [skip ci] 2026-04-05 07:16:56 +00:00
GitHub Action 3508b0921c chore(release): 0.6.91 [skip ci] 2026-04-03 04:11:00 +00:00
GitHub Action 0c61b23afd chore(release): 0.6.90 [skip ci] 2026-03-31 03:41:55 +00:00
GitHub Action a9aa813fd0 chore(release): 0.6.89 [skip ci] 2026-03-31 01:33:59 +00:00
GitHub Action f844de78da chore(release): 0.6.88 [skip ci] 2026-03-31 00:31:08 +00:00
GitHub Action 6a5c2dd2e0 chore(release): 0.6.87 [skip ci] 2026-03-30 23:40:12 +00:00
GitHub Action 0d7a842d3d chore(release): 0.6.86 [skip ci] 2026-03-30 23:02:17 +00:00
GitHub Action 467d9175a0 chore(release): 0.6.85 [skip ci] 2026-03-24 23:18:07 +00:00
GitHub Action 19079fbdaf chore(release): 0.6.84 [skip ci] 2026-03-24 06:04:25 +00:00
GitHub Action dd5d190289 chore(release): 0.6.83 [skip ci] 2026-03-23 09:47:22 +00:00
GitHub Action 60be946cec chore(release): 0.6.82 [skip ci] 2026-03-23 09:08:27 +00:00
GitHub Action 956e8b1136 chore(release): 0.6.81 [skip ci] 2026-03-23 08:11:43 +00:00
GitHub Action 996f6e3be5 chore(release): 0.6.80 [skip ci] 2026-03-23 07:33:27 +00:00
zeekay 5d6943ab34 fix: rebrand all @just-every/code references to @hanzo/dev
- Replace codex-cli with dev-cli in pnpm workspace
- Rebrand codex-cli/package.json to @hanzo/dev
- Update README install instructions to @hanzo/dev
- Update release notes to @hanzo/dev
- Add @hanzo/dev-bridge compat check in bridge_client.rs
- Regenerate pnpm lockfile without upstream deps
2026-03-14 02:49:02 -07:00
zeekay b39c98c4d4 feat: rebrand npm to @hanzo/dev, wire ZT transport into tunnel protocol
- rust-release.yml: change npm scope from @openai to @hanzo, remove
  openai.com deploy trigger
- build_npm_package.py: rebrand all @openai/codex references to
  @hanzo/dev, rename platform packages (codex-* → hanzo-dev-*)
- stage_npm_packages.py: update tarball naming to match hanzo-dev-npm-*
- cloud.rs: complete ZT wiring — zt:// URLs now authenticate via ZT
  fabric, dial service, create TunnelConnection from channels, spawn
  ZT frame transport, and run standard dispatch loop
- zt/tunnel.rs: add run_zt_transport() — newline-delimited JSON frame
  protocol over ZtConnection (AsyncRead+AsyncWrite) with heartbeat
- Bump hanzo-tunnel dep to v0.1.1 (adds from_channels constructor)
- Add zt-tunnel feature combining zt + tunnel + hanzo-zt/tunnel
2026-03-12 00:33:29 -07:00
zeekay 9d251b3ec4 fix: publish hanzo-tunnel to crates.io, gate tunnel behind feature flag, fix CI
- hanzo-tunnel v0.1.0 published to crates.io (was path dep to ../../../tunnel)
- cli: tunnel + tunnel-bridge deps now optional behind `tunnel` feature flag
- cli: cloud module (ZT + relay) gated with #[cfg(feature = "tunnel")]
- tunnel-bridge: all hanzo_tunnel usage gated behind `tunnel` feature
- CI: fix prettier by scoping JS globs, excluding symlinked CLAUDE.md
- CI: format all workflows and docs with prettier
- Workspace compiles clean without tunnel feature (CI default)
- Local builds with `--features tunnel` still work with crates.io dep
2026-03-11 20:28:33 -07:00
zeekay 3247e56e84 Merge remote-tracking branch 'just-every-local/main'
# Conflicts:
#	.github/workflows/Dockerfile.bazel
#	.github/workflows/bazel.yml
#	.github/workflows/ci.yml
#	.github/workflows/issue-deduplicator.yml
#	.github/workflows/rust-ci.yml
#	.github/workflows/rust-release-windows.yml
#	.github/workflows/rust-release.yml
#	.github/workflows/shell-tool-mcp.yml
#	.vscode/settings.json
#	AGENTS.md
#	CHANGELOG.md
#	README.md
#	code-rs/app-server-protocol/schema/json/ClientRequest.json
#	code-rs/app-server-protocol/schema/json/CommandExecutionRequestApprovalParams.json
#	code-rs/app-server-protocol/schema/json/EventMsg.json
#	code-rs/app-server-protocol/schema/json/ExecCommandApprovalParams.json
#	code-rs/app-server-protocol/schema/json/ServerNotification.json
#	code-rs/app-server-protocol/schema/json/ServerRequest.json
#	code-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json
#	code-rs/app-server-protocol/schema/json/v1/ForkConversationParams.json
#	code-rs/app-server-protocol/schema/json/v1/ForkConversationResponse.json
#	code-rs/app-server-protocol/schema/json/v1/GetUserSavedConfigResponse.json
#	code-rs/app-server-protocol/schema/json/v1/NewConversationParams.json
#	code-rs/app-server-protocol/schema/json/v1/ResumeConversationParams.json
#	code-rs/app-server-protocol/schema/json/v1/ResumeConversationResponse.json
#	code-rs/app-server-protocol/schema/json/v1/SendUserTurnParams.json
#	code-rs/app-server-protocol/schema/json/v1/SessionConfiguredNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ConfigReadResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ConfigRequirementsReadResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ModelListResponse.json
#	code-rs/app-server-protocol/schema/json/v2/RawResponseItemCompletedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadForkParams.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadForkResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadResumeParams.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadResumeResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadStartParams.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadStartResponse.json
#	code-rs/app-server-protocol/schema/json/v2/TurnStartParams.json
#	code-rs/app-server-protocol/schema/typescript/AskForApproval.ts
#	code-rs/app-server-protocol/schema/typescript/ClientRequest.ts
#	code-rs/app-server-protocol/schema/typescript/EventMsg.ts
#	code-rs/app-server-protocol/schema/typescript/ExecApprovalRequestEvent.ts
#	code-rs/app-server-protocol/schema/typescript/ExecCommandApprovalParams.ts
#	code-rs/app-server-protocol/schema/typescript/FunctionCallOutputContentItem.ts
#	code-rs/app-server-protocol/schema/typescript/ResponseItem.ts
#	code-rs/app-server-protocol/schema/typescript/index.ts
#	code-rs/app-server-protocol/schema/typescript/v2/AskForApproval.ts
#	code-rs/app-server-protocol/schema/typescript/v2/CommandExecutionRequestApprovalParams.ts
#	code-rs/app-server-protocol/schema/typescript/v2/Model.ts
#	code-rs/app-server-protocol/schema/typescript/v2/index.ts
#	code-rs/app-server-protocol/src/protocol/common.rs
#	code-rs/app-server-protocol/src/protocol/v1.rs
#	code-rs/app-server-protocol/src/protocol/v2.rs
#	code-rs/app-server/src/code_message_processor.rs
#	code-rs/app-server/src/lib.rs
#	code-rs/app-server/src/message_processor.rs
#	code-rs/protocol/src/approvals.rs
#	code-rs/protocol/src/config_types.rs
#	code-rs/protocol/src/models.rs
#	code-rs/protocol/src/openai_models.rs
#	code-rs/protocol/src/prompts/permissions/approval_policy/on_request_rule.md
#	code-rs/protocol/src/protocol.rs
#	code-rs/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_help_overlay_open.snap
#	code-rs/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_help_overlay_section_open.snap
#	codex-cli/package.json
#	docs/agents.md
#	docs/config.md
#	docs/faq.md
#	docs/install.md
#	docs/release-notes/RELEASE_NOTES.md
#	docs/slash-commands.md
#	hanzo-dev/Cargo.lock
#	hanzo-dev/code-auto-drive-core/src/auto_compact.rs
#	hanzo-dev/code-auto-drive-core/src/auto_drive_history.rs
#	hanzo-dev/core/src/agent_tool.rs
#	hanzo-dev/core/src/chat_completions.rs
#	hanzo-dev/core/src/client.rs
#	hanzo-dev/core/src/client_common.rs
#	hanzo-dev/core/src/codex.rs
#	hanzo-dev/core/src/codex/compact.rs
#	hanzo-dev/core/src/codex/compact_remote.rs
#	hanzo-dev/core/src/codex/session.rs
#	hanzo-dev/core/src/codex/streaming.rs
#	hanzo-dev/core/src/config.rs
#	hanzo-dev/core/src/config/sources.rs
#	hanzo-dev/core/src/config/validation.rs
#	hanzo-dev/core/src/config_profile.rs
#	hanzo-dev/core/src/config_types.rs
#	hanzo-dev/core/src/event_mapping.rs
#	hanzo-dev/core/src/exec_command/exec_command_params.rs
#	hanzo-dev/core/src/external_agent_config.rs
#	hanzo-dev/core/src/memories/citations.rs
#	hanzo-dev/core/src/memories/mod.rs
#	hanzo-dev/core/src/memories/storage.rs
#	hanzo-dev/core/src/model_family.rs
#	hanzo-dev/core/src/openai_tools.rs
#	hanzo-dev/core/src/protocol.rs
#	hanzo-dev/core/src/remote_models/mod.rs
#	hanzo-dev/core/src/rollout/policy.rs
#	hanzo-dev/core/src/slash_commands.rs
#	hanzo-dev/exec/src/lib.rs
#	hanzo-dev/protocol/src/mcp_protocol.rs
#	hanzo-dev/tui/Cargo.toml
#	hanzo-dev/tui/src/app/events.rs
#	hanzo-dev/tui/src/app_event.rs
#	hanzo-dev/tui/src/bottom_pane/chat_composer.rs
#	hanzo-dev/tui/src/bottom_pane/memories_settings_view.rs
#	hanzo-dev/tui/src/bottom_pane/mod.rs
#	hanzo-dev/tui/src/bottom_pane/model_selection_view.rs
#	hanzo-dev/tui/src/bottom_pane/settings_overlay.rs
#	hanzo-dev/tui/src/chatwidget.rs
#	hanzo-dev/tui/src/chatwidget/agent_summary.rs
#	hanzo-dev/tui/src/chatwidget/settings_overlay.rs
#	hanzo-dev/tui/src/history_cell/plain.rs
#	hanzo-dev/tui/src/lib.rs
#	hanzo-dev/tui/src/memory_citation.rs
#	hanzo-dev/tui/src/streaming/controller.rs
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_help_overlay_closed.snap
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_help_overlay_section_closed.snap
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_overlay_overview_layout.snap
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_overlay_overview_truncates.snap
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_overview_hints_clean.snap
#	hanzo-dev/tui/tests/ui_smoke.rs
2026-03-09 12:02:13 -07:00
GitHub Action 4eed6013b5 chore(release): 0.6.79 [skip ci] 2026-03-08 15:32:37 +00:00
GitHub Action c6e54b48e5 chore(release): 0.6.78 [skip ci] 2026-03-08 14:41:51 +00:00
GitHub Action 7ba19a3237 chore(release): 0.6.77 [skip ci] 2026-03-07 15:15:53 +00:00
GitHub Action 05547fbf2e chore(release): 0.6.76 [skip ci] 2026-03-07 13:03:16 +00:00
GitHub Action bdafc15524 chore(release): 0.6.75 [skip ci] 2026-03-06 01:22:10 +00:00
GitHub Action 2e04db2c4c chore(release): 0.6.74 [skip ci] 2026-02-27 05:34:35 +00:00
GitHub Action 4e7ced4d56 chore(release): 0.6.73 [skip ci] 2026-02-27 04:38:55 +00:00
GitHub Action 8de7fb12d5 chore(release): 0.6.72 [skip ci] 2026-02-27 01:45:38 +00:00
GitHub Action 6ccec41e5f chore(release): 0.6.71 [skip ci] 2026-02-26 22:34:40 +00:00