What changed in the major AI coding CLIs?
OpenAI upgraded Codex with plugins enabled by default, npm marketplace plugin sourcing, MCP tool search, system proxy support, Amazon Bedrock support, maximum reasoning effort, remote-control pairing, and clearer plugin management [3547]. Anthropic released an official skill called Frontend Design for Claude Code, which forces Claude to choose an aesthetic direction before generating code, available for multiple frameworks and harnesses [3545]. xAI open-sourced Grok Build, their answer to Claude Code, and five days earlier quietly released an official Claude Code plugin with 8 commands [3543]. A GitHub repo with 26k stars and 4k forks allows Claude Code to be rerouted to free models like DeepSeek and Kimi, reportedly losing Anthropic 20,000 users [3542]. A user built a true-scale atlas of the universe containing 8.4 million real stars in about a week using the AI coding tool Fable [3541]. Claude AI launched Claude for Teachers, offering free premium access to verified K-12 educators in the US with teaching skills and standards-aligned curricula [3537]. Google Gemini CLI received multiple fixes: strip thoughts from scrubbed history turns and resolve thought leakage [3642], preserve escape sequences in string literals for modern models [3641], make ~/.gitconfig read-only in the macOS sandbox [3640], egress cloud run service skeleton [3639], resolve symbolic link directory escape in memory import processor [3638], implement Cloud Run webhook ingestion service [3637], resolve defensive path resolution for at-reference files and fix macOS tests [3636], enforce case-insensitive sensitive path blocklist and vscode hitl [3635], and fix no_proxy test [3634]. Codex removed an obsolete workaround that could interfere with OpenAI Luna Responses Lite requests [3633]. Preserved the composer caret after request updates [3632]. Resynced the timeline correctly after reconnecting [3631]. Loaded more timeline history at once to reduce repeated backfill while scrolling [3630]. Fixed a project picker positioning crash [3629]. Kept permission auto-accept state separate for each server [3628]. Fixed connected project picker positioning when its anchor is still loading [3627]. Fixed spacing between model provider sections in Settings [3626]. fix(core): tolerate AlreadyExists in FSUtil.ensureDir (#36542) [3625]. Hid the drawer close button on Windows where it conflicts with the window chrome [3624]. Stopped subagents from launching nested subagents by default, with a configurable subagent_depth limit when needed [3623]. Home page command palette search can now find and open sessions [3622]. Fixed custom agent selector visibility when custom agents are available [3621]. Fixed startup readiness so WSL server loading is included before the desktop app reports ready [3620]. Improved dangerous-command detection, including more forced rm forms, and provides clearer rejection reasons when commands are denied [3619]. Fixed very large markdown tables stalling rendering or using excessive memory; tables over 200 rows show the first 200 with a "… N more rows" notice [3618]. Fixed truncated stream-json/JSON output and missing result message when piping large responses from claude -p [3617]. Fixed replies typed to a background agent being lost when delivery fails — the text is now saved and delivered when the session restarts [3616]. Fixed fast mode staying off after switching back to a model that supports it — it now restores automatically when enabled in settings [3615]. Added mouse-click support for multi-select menus and "Other" input rows in fullscreen mode [3614]. Added vimInsertModeRemaps setting: map two-key insert-mode sequences like jj to Escape in vim mode [3613]. Added screen reader mode: opt-in plain-text rendering for screen reader users. Run claude --ax-screen-reader, set CLAUDE_AX_SCREEN_READER=1, or add "axScreenReader": true to settings [3612]. Fixed plan approvals without edits being labeled "(edited by user)" and overwriting the plan file with a stale snapshot [3611]. Fixed a hook callback timeout being misreported to the model as a user rejection, which made unattended sessions stop and wait [3610]. Fixed a session crash when a tool's result renderer returned a numeric bigint value or plain text instead of a UI element [3609]. Fixed paste markers leaking into external editors opened from Claude Code, which could appear as stray È/É characters around pasted text [3608]. Fixed a rendered text fragment leaking into crash telemetry when a UI component returned content outside a styled text element [3607]. Fixed the ultracode keyword opt-in firing on non-human-originated input such as webhook payloads and relayed PR comments [3606]. Added a startup warning for Write(path), NotebookEdit(path), and Glob(path) permission rules — use Edit(path) or Read(path) instead [3605]. Added a live elapsed-time counter to the collapsed tool summary line so long-running tool calls visibly tick instead of looking stuck [3604]. Fixed edits that leave the input as "?" being silently swallowed and toggling the shortcuts panel [3603]. Fixed file upload validation: filenames ending in a DOS device suffix (.prn) or trailing dot are now accepted, and files with multiple hard links are refused [3602]. Fixed Claude Code on Vertex and Bedrock attempting the default Opus model at startup and printing a spurious fallback notice when a model is explicitly configured [3601]. Fixed auto mode overriding a PreToolUse hook's ask decision for unsandboxed Bash — a hook ask now floors the decision at a prompt [3600]. Fixed permission previews relayed to chat channels not neutralizing bidirectional-override, zero-width, and look-alike quote characters, so tool inputs cannot visually alter the approval message [3599]. Fixed shell mode (!) not executing commands containing file paths while the path autocomplete popup was open [3598]. Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143 [3597]. Fixed a continue:false hook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections [3596]. Fixed plan mode auto-running file-modifying Bash commands (e.g. touch, rm) without a permission prompt or SDK canUseTool callback [3595]. Added a session-wide limit on WebSearch tool calls (default 200, tunable via CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION) to stop runaway search loops [3594].[55]
OpenAI released an update to Codex enabling remote control, cloud workspaces, multi-agent workflows, and indexed web search [3825]. OpenAI updated Codex with default plugins, npm marketplace integration, MCP tool search, system proxy support, and Amazon Bedrock support [3826]. The Codex Tag demo has been rewritten, reducing core to under 10k LOC, improving performance for long-running tasks by delegating to pidotdev [3827]. Anthropic released an official skill 'Frontend Design' for Claude Code that enforces aesthetic direction before coding, with 161k GitHub stars [3822]. Claude Code on desktop now includes an in-app browser that can pull up and interact with docs, designs, and other sites, sandboxed and configurable [3818]. Google Gemini CLI received multiple fixes: strip thoughts from scrubbed history turns and resolve thought leakage [3817], preserve escape sequences in string literals for modern models [3816], make ~/.gitconfig read-only in the macOS sandbox [3815], egress cloud run service skeleton [3814], resolve symbolic link directory escape in memory import processor [3813], implement Cloud Run webhook ingestion service [3812], resolve defensive path resolution for at-reference files and fix macOS tests [3811], enforce case-insensitive sensitive path blocklist and vscode hitl [3810], and fix no_proxy test [3809]. Codex removed an obsolete workaround that could interfere with OpenAI Luna Responses Lite requests [3808]. Preserved the composer caret after request updates [3807]. Resynced the timeline correctly after reconnecting [3806]. Loaded more timeline history at once to reduce repeated backfill while scrolling [3805]. Fixed a project picker positioning crash [3804]. Kept permission auto-accept state separate for each server [3803]. Fixed connected project picker positioning when its anchor is still loading [3802]. Fixed spacing between model provider sections in Settings [3801]. fix(core): tolerate AlreadyExists in FSUtil.ensureDir (#36542) [3800]. Hid the drawer close button on Windows where it conflicts with the window chrome [3799]. Stopped subagents from launching nested subagents by default, with a configurable subagent_depth limit when needed [3798]. Home page command palette search can now find and open sessions [3797]. Fixed custom agent selector visibility when custom agents are available [3796]. Fixed startup readiness so WSL server loading is included before the desktop app reports ready [3795]. Improved dangerous-command detection, including more forced rm forms, and provides clearer rejection reasons when commands are denied [3794]. Fixed very large markdown tables stalling rendering or using excessive memory; tables over 200 rows show the first 200 with a "… N more rows" notice [3793]. Fixed truncated stream-json/JSON output and missing result message when piping large responses from claude -p [3792]. Fixed replies typed to a background agent being lost when delivery fails — the text is now saved and delivered when the session restarts [3791]. Fixed fast mode staying off after switching back to a model that supports it — it now restores automatically when enabled in settings [3790]. Added mouse-click support for multi-select menus and "Other" input rows in fullscreen mode [3789]. Added vimInsertModeRemaps setting: map two-key insert-mode sequences like jj to Escape in vim mode [3788]. Added screen reader mode: opt-in plain-text rendering for screen reader users. Run claude --ax-screen-reader, set CLAUDE_AX_SCREEN_READER=1, or add "axScreenReader": true to settings [3787]. Fixed plan approvals without edits being labeled "(edited by user)" and overwriting the plan file with a stale snapshot [3786]. Fixed a hook callback timeout being misreported to the model as a user rejection, which made unattended sessions stop and wait [3785]. Fixed a session crash when a tool's result renderer returned a numeric bigint value or plain text instead of a UI element [3784]. Fixed paste markers leaking into external editors opened from Claude Code, which could appear as stray È/É characters around pasted text [3783]. Fixed a rendered text fragment leaking into crash telemetry when a UI component returned content outside a styled text element [3782]. Fixed the ultracode keyword opt-in firing on non-human-originated input such as webhook payloads and relayed PR comments [3781]. Added a startup warning for Write(path), NotebookEdit(path), and Glob(path) permission rules — use Edit(path) or Read(path) instead [3780]. Added a live elapsed-time counter to the collapsed tool summary line so long-running tool calls visibly tick instead of looking stuck [3779]. Fixed edits that leave the input as "?" being silently swallowed and toggling the shortcuts panel [3778]. Fixed file upload validation: filenames ending in a DOS device suffix (.prn) or trailing dot are now accepted, and files with multiple hard links are refused [3777]. Fixed Claude Code on Vertex and Bedrock attempting the default Opus model at startup and printing a spurious fallback notice when a model is explicitly configured [3776]. Fixed auto mode overriding a PreToolUse hook's ask decision for unsandboxed Bash — a hook ask now floors the decision at a prompt [3775]. Fixed permission previews relayed to chat channels not neutralizing bidirectional-override, zero-width, and look-alike quote characters, so tool inputs cannot visually alter the approval message [3774]. Fixed shell mode (!) not executing commands containing file paths while the path autocomplete popup was open [3773]. Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143 [3772]. Fixed a continue:false hook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections [3771]. Fixed plan mode auto-running file-modifying Bash commands (e.g. touch, rm) without a permission prompt or SDK canUseTool callback [3770]. Added a session-wide limit on WebSearch tool calls (default 200, tunable via CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION) to stop runaway search loops [3769].
OpenAI is targeting July 7 for GPT-5.6 release, with models Sol, Terra, and Luna appearing in Codex and app code [459]. Codex 5.6 is currently in testing, featuring better understanding of user intent and three new models: Sol, Terra, and Luna [985]. Codex resets have expiration dates, with the first reset expiring on July 12, and a potential global reset coinciding with GPT-5.6 release [986]. The US government reversed export restrictions on Anthropic's Fable 5 and Mythos 5, allowing global rollout starting July 1 [411]. Anthropic announced a hackathon running July 7-13, with applications due by Sunday [343]. Anthropic and Gladstone Institutes announced a virtual hackathon with $100k in credits for building with Claude Science and Claude Code [56]. All paid plans with usage included can access Fable 5 through July 7, up to 50% of weekly usage limit [61]. Claude extends doubled Cowork usage limits until August 5, allowing larger task delegation [840]. Sonnet 5 is now default on Free and Pro, available to Max, Team, Enterprise, with introductory pricing through August 31 [60].[9]
Added new events: Codex Tag rewrite, Claude Code in-app browser, OpenAI Codex updates for remote control and plugins, and upcoming catalysts including GPT-5.6 release date and Fable 5 export reversal.