Files
codex/codex-rs/Cargo.toml
jif-oai d65ed92a5e ## New Features
- Added `codex marketplace add` and app-server support for installing plugin marketplaces from GitHub, git URLs, local directories, and direct `marketplace.json` URLs (#17087, #17717, #17756).
- Added TUI prompt history improvements, including `Ctrl+R` reverse search and local recall for accepted slash commands (#17550, #17336).
- Added TUI and app-server controls for memory mode, memory reset/deletion, and memory-extension cleanup (#17632, #17626, #17913, #17937, #17844).
- Expanded MCP/plugin support with MCP Apps tool calls, namespaced MCP registration, parallel-call opt-in, and sandbox-state metadata for MCP servers (#17364, #17404, #17667, #17763).
- Added realtime and app-server APIs for output modality, transcript completion events, raw turn item injection, and symlink-aware filesystem metadata (#17701, #17703, #17719).
- Added a secure devcontainer profile with bubblewrap support, plus macOS sandbox allowlists for Unix sockets (#10431, #17547, #17654).

## Bug Fixes
- Fixed macOS sandbox/proxy handling for private DNS and removed the `danger-full-access` denylist-only network mode (#17370, #17732).
- Fixed Windows cwd/session matching so `resume --last` and `thread/list` work when paths use verbatim prefixes (#17414).
- Fixed rate-limit/account handling for `prolite` plans and made unknown WHAM plan values decodable (#17419).
- Made Guardian timeouts distinct from policy denials, with timeout-specific guidance and visible TUI history entries (#17381, #17486, #17521, #17557).
- Stabilized app-server behavior by avoiding premature thread unloads, tolerating failed trust persistence on startup, and skipping broken symlinks in `fs/readDirectory` (#17398, #17595, #17907).
- Fixed MCP/tool-call edge cases including flattened deferred tool names, elicitation timeout accounting, and empty namespace descriptions (#17556, #17566, #17946).

## Documentation
- Documented the secure devcontainer profile and its bubblewrap requirements (#10431, #17547).
- Added TUI composer documentation for history search behavior (#17550).
- Updated app-server docs for new MCP, marketplace, turn injection, memory reset, filesystem metadata, external-agent migration, and websocket token-hash APIs (#17364, #17717, #17703, #17913, #17719, #17855, #17871).
- Documented WSL1 bubblewrap limitations and WSL2 behavior (#17559).
- Added memory pipeline documentation for extension cleanup (#17844).

## Chores
- Hardened supply-chain and CI inputs by pinning GitHub Actions, cargo installs, git dependencies, V8 checksums, and cargo-deny source allowlists (#17471).
- Added Bazel release-build verification so release-only Rust code is compiled in PR CI (#17704, #17705).
- Introduced the `codex-thread-store` crate/interface and moved local thread listing behind it (#17659, #17824).
- Required reviewed pnpm dependency build scripts for workspace installs (#17558).
- Reduced Rust maintenance surface with broader absolute-path types and removal of unused helper APIs (#17407, #17792, #17146).

## Changelog

Full Changelog: https://github.com/openai/codex/compare/rust-v0.120.0...rust-v0.121.0

- #17087 Add marketplace command @xli-oai
- #17409 Fix Windows exec-server output test flake @etraut-openai
- #17381 representing guardian review timeouts in protocol types @won-openai
- #17399 TUI: enforce core boundary @etraut-openai
- #17370 fix: unblock private DNS in macOS sandbox @viyatb-oai
- #17396 update cloud requirements parse failure msg @alexsong-oai
- #17364 [mcp] Support MCP Apps part 3 - Add mcp tool call support. @mzeng-openai
- #17424 Stabilize marketplace add local source test @ningyi-oai
- #17414 Fix thread/list cwd filtering for Windows verbatim paths @etraut-openai
- #10431 feat(devcontainer): add separate secure customer profile @viyatb-oai
- #17314 Pass turn id with feedback uploads @ningyi-oai
- #17336 fix(tui): recall accepted slash commands locally @fcoury-oai
- #17430 Handle closed TUI input stream as shutdown @etraut-openai
- #17385 Add use_agent_identity feature flag @adrian-openai
- #17483 Update issue labeler agent labels @etraut-openai
- #17493 fix @aibrahim-oai
- #17419 Support prolite plan type @etraut-openai
- #17416 Clear /ps after /stop @etraut-openai
- #17415 Restore codex-tui resume hint on exit @etraut-openai
- #17402 chore: refactor name and namespace to single type @sayan-oai
- #17486 changing decision semantics after guardian timeout @won-openai
- #17521 Clarify guardian timeout guidance @won-openai
- #17547 [codex] Support bubblewrap in secure Docker devcontainer @viyatb-oai
- #17519 Budget realtime current thread context @aibrahim-oai
- #17556 [codex] Support flattened deferred MCP tool calls @fc-oai
- #17558 build(pnpm): require reviewed dependency build scripts @mcgrew-oai
- #17559 fix(sandboxing): reject WSL1 bubblewrap sandboxing @viyatb-oai
- #17520 Mirror user text into realtime @aibrahim-oai
- #17550 feat(tui): add reverse history search to composer @fcoury-oai
- #17420 Remove context status-line meter @etraut-openai
- #17506 Expose instruction sources (AGENTS.md) via app server @etraut-openai
- #17566 fix(mcp) pause timer for elicitations @dylan-hurd-oai
- #17406 Add MCP tool wall time to model output @pakrym-oai
- #17294 Run exec-server fs operations through sandbox helper @starr-openai
- #17605 Stabilize exec-server process tests @etraut-openai
- #17221 feat: ignore keyring on 0.0.0 @jif-oai
- #17216 Build remote exec env from exec-server policy @jif-oai
- #17633 nit: change consolidation model @jif-oai
- #17640 fix: stability exec server @jif-oai
- #17643 fix: dedup compact @jif-oai
- #17247 Make forked agent spawns keep parent model config @friel-openai
- #17470 Fix custom tool output cleanup on stream failure @etraut-openai
- #17417 Emit plan-mode prompt notifications for questionnaires @etraut-openai
- #17481 Wrap status reset timestamps in narrow layouts @etraut-openai
- #17601 Suppress duplicate compaction and terminal wait events @etraut-openai
- #17657 Fix TUI compaction item replay @etraut-openai
- #17595 Do not fail thread start when trust persistence fails @etraut-openai
- #17407 Use AbsolutePathBuf in skill loading and codex_home @pakrym-oai
- #17626 feat: disable memory endpoint @jif-oai
- #17365 Include legacy deny paths in elevated Windows sandbox setup @iceweasel-oai
- #17638 feat: Avoid reloading curated marketplaces for tool-suggest discovera… @jif-oai
- #17398 app-server: Only unload threads which were unused for some time @euroelessar
- #17669 only specify remote ports when the rule needs them @iceweasel-oai
- #17691 Fix tui compilation @davidhao3300
- #17384 Update phase 2 memory model to gpt-5.4 @kliu128
- #17395 Remove unnecessary tests @kliu128
- #17685 Cap realtime mirrored user turns @aibrahim-oai
- #17699 change realtime tool description @aibrahim-oai
- #17667 Add `supports_parallel_tool_calls` flag to included mcps @josiah-openai
- #17703 Add turn item injection API @pakrym-oai
- #17671 Stabilize exec-server filesystem tests in CI @starr-openai
- #17557 guardian timeout fix pr 3 - ux touch for timeouts @won-openai
- #17719 [codex] Add symlink flag to fs metadata @pakrym-oai
- #17146 [codex] Remove unused Rust helpers @pakrym-oai
- #17471 fix: pin inputs @viyatb-oai
- #17717 [codex] Refactor marketplace add into shared core flow @xli-oai
- #17747 Refactor plugin loading to async @pakrym-oai
- #17709 [codex] Initialize ICU data for code mode V8 @pakrym-oai
- #17749 [codex] drain mailbox only at request boundaries @tibo-openai
- #16640 [codex-analytics] feature plumbing and emittance @rhan-oai
- #17761 Tighten realtime handoff finalization @aibrahim-oai
- #17701 Add realtime output modality and transcript events @aibrahim-oai
- #17777 nit: feature flag @jif-oai
- #17637 feat: add context percent to status line @jif-oai
- #17665 Always enable original image detail on supported models @fjord-oai
- #17374 [codex-analytics] add session source to client metadata @marksteinbrick-oai
- #17489 Moving updated-at timestamps to unique millisecond times @ddr-oai
- #17784 feat: codex sampler @jif-oai
- #17732 fix: Revert danger-full-access denylist-only mode @viyatb-oai
- #17234 Redirect debug client output to a file @rasmusrygaard
- #17803 Keep image_detail_original as a removed feature flag @fjord-oai
- #17372 app-server: prepare to run initialized rpcs concurrently @euroelessar
- #17704 Refactor Bazel CI job setup @bolinfest
- #17674 Route apply_patch through the environment filesystem @starr-openai
- #17702 Fix remote skill popup loading @starr-openai
- #17830 [codex] Fix app-server initialized request analytics build @etraut-openai
- #17389 [codex-analytics] enable general analytics by default @rhan-oai
- #17659 thread store interface @wiltzius-openai
- #17792 Spread AbsolutePathBuf @pakrym-oai
- #17808 fix: apply patch bin refresh @jif-oai
- #17838 Add realtime wire trace logs @aibrahim-oai
- #17684 Adjust default tool search result caps @malone-oai
- #17705 Add Bazel verify-release-build job @bolinfest
- #17720 Make skill loading filesystem-aware @pakrym-oai
- #17756 [codex] Support local marketplace sources @xli-oai
- #17846 Fix for Guardian CI Tests stack overflow, applying Box to reduce stack pressure @won-openai
- #17855 support plugins in external agent config migration @alexsong-oai
- #17872 Disable hooks in guardian review sessions @abhinav-oai
- #17868 Wrap delegated input text @guinness-oai
- #17884 Fix clippy warnings in external agent config migration @canvrno-oai
- #17837 Reuse remote exec-server in core tests @starr-openai
- #17859 sandbox: remove dead seatbelt helper and update tests @bolinfest
- #17870 fix: cleanup the contract of the general-purpose exec() function @bolinfest
- #17871 fix: add websocket capability token hash support @viyatb-oai
- #17763 Send sandbox state through MCP tool metadata @aaronl-openai
- #17654 Support Unix socket allowlists in macOS sandbox @aaronl-openai
- #17915 fix: cargo deny @jif-oai
- #17913 feat: add endpoint to delete memories @jif-oai
- #17844 feat: cleaning of memories extension @jif-oai
- #17921 chore: exp flag @jif-oai
- #17917 [codex] Fix current main CI blockers @sayan-oai
- #17919 chore: do not disable memories for past rollouts on reset @jif-oai
- #17924 nit: stable test @jif-oai
- #17632 feat: memories menu @jif-oai
- #17404 register all mcp tools with namespace @sayan-oai
- #17941 nit: doc @jif-oai
- #17938 feat: sanitize rollouts before phase 1 @jif-oai
- #17937 feat: reset memories button @jif-oai
- #17883 Remove exec-server fs sandbox request preflight @pakrym-oai
- #17386 Register agent identities behind use_agent_identity @adrian-openai
- #17907 Fix fs/readDirectory to skip broken symlinks @willwang-openai
- #17960 chore(features) codex dependencies feat @dylan-hurd-oai
- #17965 fix: rename is_azure_responses_wire_base_url to is_azure_responses_provider @bolinfest
- #17946 Fix empty tool descriptions @shijie-oai
- #17824 [codex] Add local thread store listing @wiltzius-openai
- #17942 Add CLI update announcement @shijie-oai
- #17866 Refactor auth providers to mutate request headers @pakrym-oai
- #17902 app-server: track remote-control seq IDs per stream @euroelessar
- #17957 mcp: remove codex/sandbox-state custom request support @bolinfest
- #17953 fix: propagate log db @jif-oai
- #17920 chore(tui) cleanup @dylan-hurd-oai
- #17981 chore: tmp disable @jif-oai
2026-04-15 20:43:45 +01:00

446 lines
13 KiB
TOML

[workspace]
members = [
"analytics",
"backend-client",
"ansi-escape",
"async-utils",
"app-server",
"app-server-client",
"app-server-protocol",
"app-server-test-client",
"debug-client",
"apply-patch",
"arg0",
"feedback",
"features",
"codex-backend-openapi-models",
"code-mode",
"cloud-requirements",
"cloud-tasks",
"cloud-tasks-client",
"cloud-tasks-mock-client",
"cli",
"collaboration-mode-templates",
"connectors",
"config",
"shell-command",
"shell-escalation",
"skills",
"core",
"core-skills",
"hooks",
"instructions",
"secrets",
"exec",
"exec-server",
"execpolicy",
"execpolicy-legacy",
"keyring-store",
"file-search",
"linux-sandbox",
"lmstudio",
"login",
"codex-mcp",
"mcp-server",
"model-provider-info",
"models-manager",
"network-proxy",
"ollama",
"process-hardening",
"protocol",
"realtime-webrtc",
"rollout",
"rmcp-client",
"responses-api-proxy",
"response-debug-context",
"sandboxing",
"stdio-to-uds",
"otel",
"tui",
"tools",
"v8-poc",
"utils/absolute-path",
"utils/cargo-bin",
"git-utils",
"utils/cache",
"utils/image",
"utils/json-to-toml",
"utils/home-dir",
"utils/pty",
"utils/readiness",
"utils/rustls-provider",
"utils/string",
"utils/cli",
"utils/elapsed",
"utils/sandbox-summary",
"utils/sleep-inhibitor",
"utils/approval-presets",
"utils/oss",
"utils/output-truncation",
"utils/path-utils",
"utils/plugins",
"utils/fuzzy-match",
"utils/stream-parser",
"utils/template",
"codex-client",
"codex-api",
"state",
"terminal-detection",
"test-binary-support",
"thread-store",
"codex-experimental-api-macros",
"plugin",
]
resolver = "2"
[workspace.package]
version = "0.121.0"
# Track the edition for all workspace crates in one place. Individual
# crates can still override this value, but keeping it here means new
# crates created with `cargo new -w ...` automatically inherit the 2024
# edition.
edition = "2024"
license = "Apache-2.0"
[workspace.dependencies]
# Internal
app_test_support = { path = "app-server/tests/common" }
codex-analytics = { path = "analytics" }
codex-ansi-escape = { path = "ansi-escape" }
codex-api = { path = "codex-api" }
codex-app-server = { path = "app-server" }
codex-app-server-client = { path = "app-server-client" }
codex-app-server-protocol = { path = "app-server-protocol" }
codex-app-server-test-client = { path = "app-server-test-client" }
codex-apply-patch = { path = "apply-patch" }
codex-arg0 = { path = "arg0" }
codex-async-utils = { path = "async-utils" }
codex-backend-client = { path = "backend-client" }
codex-chatgpt = { path = "chatgpt" }
codex-cli = { path = "cli" }
codex-client = { path = "codex-client" }
codex-collaboration-mode-templates = { path = "collaboration-mode-templates" }
codex-cloud-requirements = { path = "cloud-requirements" }
codex-cloud-tasks-client = { path = "cloud-tasks-client" }
codex-cloud-tasks-mock-client = { path = "cloud-tasks-mock-client" }
codex-code-mode = { path = "code-mode" }
codex-config = { path = "config" }
codex-connectors = { path = "connectors" }
codex-core = { path = "core" }
codex-core-skills = { path = "core-skills" }
codex-exec = { path = "exec" }
codex-exec-server = { path = "exec-server" }
codex-execpolicy = { path = "execpolicy" }
codex-experimental-api-macros = { path = "codex-experimental-api-macros" }
codex-features = { path = "features" }
codex-feedback = { path = "feedback" }
codex-file-search = { path = "file-search" }
codex-git-utils = { path = "git-utils" }
codex-hooks = { path = "hooks" }
codex-instructions = { path = "instructions" }
codex-keyring-store = { path = "keyring-store" }
codex-linux-sandbox = { path = "linux-sandbox" }
codex-lmstudio = { path = "lmstudio" }
codex-login = { path = "login" }
codex-mcp = { path = "codex-mcp" }
codex-mcp-server = { path = "mcp-server" }
codex-model-provider-info = { path = "model-provider-info" }
codex-models-manager = { path = "models-manager" }
codex-network-proxy = { path = "network-proxy" }
codex-ollama = { path = "ollama" }
codex-otel = { path = "otel" }
codex-plugin = { path = "plugin" }
codex-process-hardening = { path = "process-hardening" }
codex-protocol = { path = "protocol" }
codex-realtime-webrtc = { path = "realtime-webrtc" }
codex-responses-api-proxy = { path = "responses-api-proxy" }
codex-response-debug-context = { path = "response-debug-context" }
codex-rmcp-client = { path = "rmcp-client" }
codex-rollout = { path = "rollout" }
codex-sandboxing = { path = "sandboxing" }
codex-secrets = { path = "secrets" }
codex-shell-command = { path = "shell-command" }
codex-shell-escalation = { path = "shell-escalation" }
codex-skills = { path = "skills" }
codex-state = { path = "state" }
codex-stdio-to-uds = { path = "stdio-to-uds" }
codex-terminal-detection = { path = "terminal-detection" }
codex-test-binary-support = { path = "test-binary-support" }
codex-thread-store = { path = "thread-store" }
codex-tools = { path = "tools" }
codex-tui = { path = "tui" }
codex-utils-absolute-path = { path = "utils/absolute-path" }
codex-utils-approval-presets = { path = "utils/approval-presets" }
codex-utils-cache = { path = "utils/cache" }
codex-utils-cargo-bin = { path = "utils/cargo-bin" }
codex-utils-cli = { path = "utils/cli" }
codex-utils-elapsed = { path = "utils/elapsed" }
codex-utils-fuzzy-match = { path = "utils/fuzzy-match" }
codex-utils-home-dir = { path = "utils/home-dir" }
codex-utils-image = { path = "utils/image" }
codex-utils-json-to-toml = { path = "utils/json-to-toml" }
codex-utils-oss = { path = "utils/oss" }
codex-utils-output-truncation = { path = "utils/output-truncation" }
codex-utils-path = { path = "utils/path-utils" }
codex-utils-plugins = { path = "utils/plugins" }
codex-utils-pty = { path = "utils/pty" }
codex-utils-readiness = { path = "utils/readiness" }
codex-utils-rustls-provider = { path = "utils/rustls-provider" }
codex-utils-sandbox-summary = { path = "utils/sandbox-summary" }
codex-utils-sleep-inhibitor = { path = "utils/sleep-inhibitor" }
codex-utils-stream-parser = { path = "utils/stream-parser" }
codex-utils-string = { path = "utils/string" }
codex-utils-template = { path = "utils/template" }
codex-v8-poc = { path = "v8-poc" }
codex-windows-sandbox = { path = "windows-sandbox-rs" }
core_test_support = { path = "core/tests/common" }
mcp_test_support = { path = "mcp-server/tests/common" }
# External
age = "0.11.1"
allocative = "0.3.3"
ansi-to-tui = "7.0.0"
anyhow = "1"
arboard = { version = "3", features = ["wayland-data-control"] }
arc-swap = "1.9.0"
assert_cmd = "2"
assert_matches = "1.5.0"
async-channel = "2.3.1"
async-stream = "0.3.6"
async-trait = "0.1.89"
axum = { version = "0.8", default-features = false }
base64 = "0.22.1"
bm25 = "2.3.2"
bytes = "1.10.1"
chardetng = "0.1.17"
chrono = "0.4.43"
clap = "4"
clap_complete = "4"
color-eyre = "0.6.3"
constant_time_eq = "0.3.1"
crossbeam-channel = "0.5.15"
crossterm = "0.28.1"
csv = "1.3.1"
ctor = "0.6.3"
deno_core_icudata = "0.77.0"
derive_more = "2"
diffy = "0.4.2"
dirs = "6"
dotenvy = "0.15.7"
dunce = "1.0.4"
ed25519-dalek = { version = "2.2.0", features = ["pkcs8"] }
encoding_rs = "0.8.35"
env-flags = "0.1.1"
env_logger = "0.11.9"
eventsource-stream = "0.2.3"
futures = { version = "0.3", default-features = false }
gethostname = "1.1.0"
globset = "0.4"
hmac = "0.12.1"
http = "1.3.1"
iana-time-zone = "0.1.64"
icu_decimal = "2.1"
icu_locale_core = "2.1"
icu_provider = { version = "2.1", features = ["sync"] }
ignore = "0.4.23"
image = { version = "^0.25.9", default-features = false }
include_dir = "0.7.4"
indexmap = "2.12.0"
insta = "1.46.3"
inventory = "0.3.19"
itertools = "0.14.0"
jsonwebtoken = "9.3.1"
keyring = { version = "3.6", default-features = false }
landlock = "0.4.4"
lazy_static = "1"
libc = "0.2.182"
log = "0.4"
lru = "0.16.3"
maplit = "1.0.2"
mime_guess = "2.0.5"
multimap = "0.10.0"
notify = "8.2.0"
nucleo = { git = "https://github.com/helix-editor/nucleo.git", rev = "4253de9faabb4e5c6d81d946a5e35a90f87347ee" }
once_cell = "1.20.2"
openssl-sys = "*"
opentelemetry = "0.31.0"
opentelemetry-appender-tracing = "0.31.0"
opentelemetry-otlp = "0.31.0"
opentelemetry-semantic-conventions = "0.31.0"
opentelemetry_sdk = "0.31.0"
os_info = "3.12.0"
owo-colors = "4.3.0"
path-absolutize = "3.1.1"
pathdiff = "0.2"
portable-pty = "0.9.0"
predicates = "3"
pretty_assertions = "1.4.1"
pulldown-cmark = "0.10"
quick-xml = "0.38.4"
rand = "0.9"
ratatui = "0.29.0"
ratatui-macros = "0.6.0"
regex = "1.12.3"
regex-lite = "0.1.8"
reqwest = "0.12"
rmcp = { version = "0.15.0", default-features = false }
runfiles = { git = "https://github.com/dzbarsky/rules_rust", rev = "b56cbaa8465e74127f1ea216f813cd377295ad81" }
rustls = { version = "0.23", default-features = false, features = [
"ring",
"std",
] }
rustls-native-certs = "0.8.3"
rustls-pki-types = "1.14.0"
schemars = "0.8.22"
seccompiler = "0.5.0"
semver = "1.0"
sentry = "0.46.0"
serde = "1"
serde_json = "1"
serde_path_to_error = "0.1.20"
serde_with = "3.17"
serde_yaml = "0.9"
serial_test = "3.2.0"
sha1 = "0.10.6"
sha2 = "0.10"
shlex = "1.3.0"
similar = "2.7.0"
socket2 = "0.6.1"
sqlx = { version = "0.8.6", default-features = false, features = [
"chrono",
"json",
"macros",
"migrate",
"runtime-tokio-rustls",
"sqlite",
"time",
"uuid",
] }
starlark = "0.13.0"
strum = "0.27.2"
strum_macros = "0.28.0"
supports-color = "3.0.2"
syntect = "5"
sys-locale = "0.3.2"
tempfile = "3.23.0"
test-log = "0.2.19"
textwrap = "0.16.2"
thiserror = "2.0.17"
time = "0.3.47"
tiny_http = "0.12"
tokio = "1"
tokio-stream = "0.1.18"
tokio-test = "0.4"
tokio-tungstenite = { version = "0.28.0", features = [
"proxy",
"rustls-tls-native-roots",
] }
tokio-util = "0.7.18"
toml = "0.9.5"
toml_edit = "0.24.0"
tracing = "0.1.44"
tracing-appender = "0.2.3"
tracing-opentelemetry = "0.32.0"
tracing-subscriber = "0.3.22"
tracing-test = "0.2.5"
tree-sitter = "0.25.10"
tree-sitter-bash = "0.25"
ts-rs = "11"
tungstenite = { version = "0.27.0", features = ["deflate", "proxy"] }
uds_windows = "1.1.0"
unicode-segmentation = "1.12.0"
unicode-width = "0.2"
url = "2"
urlencoding = "2.1"
uuid = "1"
v8 = "=146.4.0"
vt100 = "0.16.2"
walkdir = "2.5.0"
webbrowser = "1.0"
which = "8"
whoami = "1.6.1"
wildmatch = "2.6.1"
zip = "2.4.2"
zstd = "0.13"
wiremock = "0.6"
zeroize = "1.8.2"
[workspace.lints]
rust = {}
[workspace.lints.clippy]
expect_used = "deny"
identity_op = "deny"
manual_clamp = "deny"
manual_filter = "deny"
manual_find = "deny"
manual_flatten = "deny"
manual_map = "deny"
manual_memcpy = "deny"
manual_non_exhaustive = "deny"
manual_ok_or = "deny"
manual_range_contains = "deny"
manual_retain = "deny"
manual_strip = "deny"
manual_try_fold = "deny"
manual_unwrap_or = "deny"
needless_borrow = "deny"
needless_borrowed_reference = "deny"
needless_collect = "deny"
needless_late_init = "deny"
needless_option_as_deref = "deny"
needless_question_mark = "deny"
needless_update = "deny"
redundant_clone = "deny"
redundant_closure = "deny"
redundant_closure_for_method_calls = "deny"
redundant_static_lifetimes = "deny"
trivially_copy_pass_by_ref = "deny"
uninlined_format_args = "deny"
unnecessary_filter_map = "deny"
unnecessary_lazy_evaluations = "deny"
unnecessary_sort_by = "deny"
unnecessary_to_owned = "deny"
unwrap_used = "deny"
# cargo-shear cannot see the platform-specific openssl-sys usage, so we
# silence the false positive here instead of deleting a real dependency.
[workspace.metadata.cargo-shear]
ignored = [
"icu_provider",
"openssl-sys",
"codex-utils-readiness",
"codex-utils-template",
"codex-v8-poc",
]
[profile.release]
lto = "fat"
split-debuginfo = "off"
# Because we bundle some of these executables with the TypeScript CLI, we
# remove everything to make the binary as small as possible.
strip = "symbols"
# See https://github.com/openai/codex/issues/1411 for details.
codegen-units = 1
[profile.ci-test]
debug = 1 # Reduce debug symbol size
inherits = "test"
opt-level = 0
[patch.crates-io]
# Uncomment to debug local changes.
# ratatui = { path = "../../ratatui" }
crossterm = { git = "https://github.com/nornagon/crossterm", rev = "87db8bfa6dc99427fd3b071681b07fc31c6ce995" }
ratatui = { git = "https://github.com/nornagon/ratatui", rev = "9b2ad1298408c45918ee9f8241a6f95498cdbed2" }
tokio-tungstenite = { git = "https://github.com/openai-oss-forks/tokio-tungstenite", rev = "132f5b39c862e3a970f731d709608b3e6276d5f6" }
tungstenite = { git = "https://github.com/openai-oss-forks/tungstenite-rs", rev = "9200079d3b54a1ff51072e24d81fd354f085156f" }
# Uncomment to debug local changes.
# rmcp = { path = "../../rust-sdk/crates/rmcp" }
[patch."ssh://git@github.com/openai-oss-forks/tungstenite-rs.git"]
tungstenite = { git = "https://github.com/openai-oss-forks/tungstenite-rs", rev = "9200079d3b54a1ff51072e24d81fd354f085156f" }