0.48.0
          ·
          
            139 commits
          
          to main
          since this release
        
        
        
Highlights
--add-dirto add an additional working directory.- Many MCP improvements:
- stdio servers now use a new client backed by the official rust MCP sdk
 - stdio servers can specify a 
cwd - All servers can specify 
enabled_toolsordisabled_tools - Streamable HTTP servers can specify 
scopesduringcodex mcp login - Improved startup error messages
 - Better instruction following for calling tools
 
 - Configuration options for 
forced_login_methodandforced_chatgpt_workspace_idwhich can be paired with managed configs to give enterprises more control over Codex usage. 
Full list of merged PRs:
- Support graceful agent interruption by @pakrym-oai in #5287
 - Fix nix build by @Mic92 in #4048
 - [MCP] Render full MCP errors to the model by @gpeal in #5298
 - Fix link to MCP Servers config section by @lopopolo-openai in #5301
 - [MCP] When MCP auth expires, prompt the user to log in again. by @gpeal in #5300
 - fix: switch rate limit reset handling to timestamps by @tibo-openai in #5304
 - fix: diff_buffers clear-to-end when deleting wide graphemes by @MomentDerek in #4921
 - docs(changelog): update install command to @openai/codex@ by @truls27a in #2073
 - fix: handle missing resume session id gracefully by @tibo-openai in #5329
 - fix: improve custom prompt documentation and actually use prompt descriptions by @tibo-openai in #5332
 - Move rust analyzer target dir by @pakrym-oai in #5328
 - Create independent TurnContexts by @pakrym-oai in #5308
 - feat: add --add-dir flag for extra writable roots by @tibo-openai in #5335
 - docs: add AGENTS.md discovery guide by @tibo-openai in #5353
 - docs: improve overall documentation by @tibo-openai in #5354
 - fix: config.md docs inaccuracies by @tibo-openai in #5355
 - fix: update CLI usage order for codex -h by @tibo-openai in #5356
 - docs: align sandbox defaults, dedupe sections and improve getting started guide by @tibo-openai in #5357
 - [MCP] Prefix MCP tools names with 
mcp__by @gpeal in #5309 - feat: experimental 
codex stdio-to-udssubcommand by @bolinfest in #5350 - Add forced_chatgpt_workspace_id and forced_login_method configuration options by @gpeal in #5303
 - Expand approvals integration coverage by @pakrym-oai in #5358
 - feat: add images support to the Codex Typescript SDK by @needs in #5281
 - Strip zsh -lc wrapper from TUI command headers by @hxreborn in #5374
 - Update Homebrew install instructions to use cask by @shijie-oai in #5377
 - Always enable plan tool in exec by @pakrym-oai in #5380
 - Auto compact at ~90% by @aibrahim-oai in #5292
 - Generate JSON schema for app-server protocol by @rasmusrygaard in #5063
 - fix: warn when --add-dir would be ignored by @tibo-openai in #5351
 - Use int timestamps for rate limit reset_at by @owenlin0 in #5383
 - chore: rework tools execution workflow by @jif-oai in #5278
 - Add ItemStarted/ItemCompleted events for UserInputItem by @pakrym-oai in #5306
 - tui: drop citation rendering by @nornagon-openai in #4855
 - [app-server] read rate limits API by @owenlin0 in #5302
 - fix terminal corruption that could happen when onboarding and update banner by @nornagon-openai in #5269
 - Reduce symbol size for tests by @pakrym-oai in #5389
 - docs: update advanced guide details by @tibo-openai in #5395
 - docs: clarify responses proxy metadata by @tibo-openai in #5406
 - [MCP] Add configuration options to enable or disable specific tools by @gpeal in #5367
 - Treat 
zsh -lclikebash -lcby @gpeal in #5411 - docs: clarify prompt metadata behavior by @tibo-openai in #5403
 - docs: remove stale contribution reference by @tibo-openai in #5400
 - docs: document exec json events by @tibo-openai in #5399
 - docs: correct getting-started behaviors by @tibo-openai in #5407
 - [MCP] Dedicated error message for GitHub MCPs missing a personal access token by @gpeal in #5393
 - chore(ci): Speed up macOS builds by using larger runner by @JaviSoto in #5234
 - feat: include cwd in notify payload by @tibo-openai in #5415
 - fix(tui): Update WSL instructions by @dylan-hurd-oai in #5307
 - [MCP] Bump rmcp to 0.8.2 by @gpeal in #5423
 - Pass TurnContext around instead of sub_id by @pakrym-oai in #5421
 - Fix flaky auth tests by @gpeal in #5461
 - chore: drop env var flag by @jif-oai in #5462
 - Enable plan tool by default by @pakrym-oai in #5384
 - feat: emit events for unified_exec by @jif-oai in #5448
 - fix: fix UI issue when 0 omitted lines by @jif-oai in #5451
 - [app-server] model/list API by @owenlin0 in #5382
 - Add a baseline test for resume initial messages by @pakrym-oai in #5466
 - [otel] init otel for app-server by @apanasenko-oai in #5469
 - feat: add experimental_bearer_token option to model provider definition by @bolinfest in #5467
 - Log HTTP Version by @pakrym-oai in #5475
 - feat: add text cleared with ctrl+c to the history so it can be recovered with up arrow by @JaviSoto in #5470
 - docs: Add 
--caskoption to brew command to suggest by @yanskun in #5432 - chore: align unified_exec by @jif-oai in #5442
 - feat: local tokenizer by @jif-oai in #5508
 - chore: drop approve all by @jif-oai in #5503
 - [MCP] Add support for specifying scopes for MCP oauth by @gpeal in #5487
 - Add new thread items and rewire event parsing to use them by @pakrym-oai in #5418
 - chore: clean spec tests by @jif-oai in #5517
 - docs: fix agents fallback example by @tibo-openai in #5396
 - [MCP] Remove the legacy stdio client in favor of rmcp by @gpeal in #5529
 - Move changing turn input functionalities to 
ConversationHistoryby @aibrahim-oai in #5473 - [app-server] send account/rateLimits/updated notifications by @owenlin0 in #5477
 - Fix IME submissions dropping leading digits by @genki in #4359
 - [app-server] add new account method API stubs by @owenlin0 in #5527
 - chore: clean 
handle_container_exec_with_paramsby @jif-oai in #5516 - fix: approval issue by @jif-oai in #5525
 - tui: show aggregated output in display by @nornagon-openai in #5539
 - Handle cancelling/aborting while processing a turn by @aibrahim-oai in #5543
 - chore: testing on apply_path by @jif-oai in #5557
 - feat: use actual tokenizer for unified_exec truncation by @jif-oai in #5514
 - fix: resume lookup for gitignored CODEX_HOME by @tibo-openai in #5311
 - feat: end events on unified exec by @jif-oai in #5551
 
New Contributors
- @Mic92 made their first contribution in #4048
 - @lopopolo-openai made their first contribution in #5301
 - @MomentDerek made their first contribution in #4921
 - @truls27a made their first contribution in #2073
 - @needs made their first contribution in #5281
 - @hxreborn made their first contribution in #5374
 - @owenlin0 made their first contribution in #5383
 - @yanskun made their first contribution in #5432
 - @genki made their first contribution in #4359
 
Full Changelog: rust-v0.47.0...rust-v0.48.0