<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: aicoding-guide</title>
    <description>The latest articles on DEV Community by aicoding-guide (@aicoding-guide).</description>
    <link>https://dev.to/aicoding-guide</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4119600%2F36237543-8d98-41c3-b6a3-c8202a09085f.png</url>
      <title>DEV Community: aicoding-guide</title>
      <link>https://dev.to/aicoding-guide</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aicoding-guide"/>
    <language>en</language>
    <item>
      <title>Every Claude Code slash command, ordered by how often you actually use it</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Tue, 10 Nov 2026 19:23:34 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/every-claude-code-slash-command-ordered-by-how-often-you-actually-use-it-jlc</link>
      <guid>https://dev.to/aicoding-guide/every-claude-code-slash-command-ordered-by-how-often-you-actually-use-it-jlc</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/claude-code-slash-commands/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The official Claude Code command reference lists more than 110 slash commands. You do not need to know them all. About six come up every day; the rest are things you look up when something goes wrong. This article regroups the official list by how often you actually reach for each one.&lt;/p&gt;

&lt;p&gt;One thing to get out of the way first: &lt;strong&gt;the built-in command list has moved.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What you will learn&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where the official list lives, and how to read &lt;code&gt;&amp;lt;arg&amp;gt;&lt;/code&gt; versus &lt;code&gt;[arg]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The six commands you use in every session, and their arguments&lt;/li&gt;
&lt;li&gt;What the Skill and Workflow markers mean, and why availability differs per person&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Where the list lives and how to read it
&lt;/h2&gt;

&lt;p&gt;The official built-in command reference is at &lt;a href="https://code.claude.com/docs/en/commands" rel="noopener noreferrer"&gt;https://code.claude.com/docs/en/commands&lt;/a&gt;. The &lt;code&gt;/docs/en/slash-commands&lt;/code&gt; URL now serves a page titled "Extend Claude with skills", which has no built-in commands table. That page points you onward itself: "For built-in commands like &lt;code&gt;/help&lt;/code&gt; and &lt;code&gt;/compact&lt;/code&gt;, and bundled skills like &lt;code&gt;/debug&lt;/code&gt; and &lt;code&gt;/code-review&lt;/code&gt;, see the commands reference".&lt;/p&gt;

&lt;p&gt;The table has just &lt;strong&gt;two columns, Command and Purpose&lt;/strong&gt;. Argument notation is fixed.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Notation&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;arg&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Required. The docs say "&lt;code&gt;&amp;lt;arg&amp;gt;&lt;/code&gt; indicates a required argument"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;[arg]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Optional. "&lt;code&gt;[arg]&lt;/code&gt; indicates an optional one"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;From inside the CLI, &lt;code&gt;/help&lt;/code&gt; gives you "Show help and available commands". When you want to know what you actually have rather than what exists, that is the reliable source.&lt;/p&gt;

&lt;h2&gt;
  
  
  The six you use every session
&lt;/h2&gt;

&lt;p&gt;Learn these and day-to-day work is covered.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What the docs say (condensed)&lt;/th&gt;
&lt;th&gt;When to reach for it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/clear [name]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Start a new conversation with empty context. A name labels the previous conversation in the &lt;code&gt;/resume&lt;/code&gt; picker. Aliases &lt;code&gt;/reset&lt;/code&gt;, &lt;code&gt;/new&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Switching to unrelated work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/compact [instructions]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;"Free up context by summarizing the conversation so far". You can pass focus instructions for the summary&lt;/td&gt;
&lt;td&gt;Freeing context without losing the thread&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/context [all]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Visualize context usage as a colored grid. Past the context window, the output warns how far over you are and which command frees space&lt;/td&gt;
&lt;td&gt;Finding out what made the session heavy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/model [model]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Switch model and save it as the default for new sessions. With no argument a picker opens; press &lt;code&gt;s&lt;/code&gt; on a row to switch &lt;strong&gt;for this session only&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Before and after a hard task&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/resume [session]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Resume a conversation by ID or name, or open the session picker. Alias &lt;code&gt;/continue&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Picking up yesterday's work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/rewind&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Rewind the conversation and/or code to a previous point, or summarize from a selected message. Aliases &lt;code&gt;/checkpoint&lt;/code&gt;, &lt;code&gt;/undo&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;After Claude heads the wrong way&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The split between &lt;code&gt;/clear&lt;/code&gt; and &lt;code&gt;/compact&lt;/code&gt; is stated right in the &lt;code&gt;/clear&lt;/code&gt; entry: "To free up context while continuing the same conversation, use &lt;code&gt;/compact&lt;/code&gt; instead." One discards the conversation; the other summarizes and keeps it. For the longer version see &lt;a href="https://aicoding-guide.com/en/posts/claude-code-context-compact/" rel="noopener noreferrer"&gt;Managing context in Claude Code with /compact versus /clear&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To move the threshold where automatic compaction fires, use &lt;code&gt;/autocompact [auto|&amp;lt;tokens&amp;gt;]&lt;/code&gt;. Pass a size such as &lt;code&gt;500k&lt;/code&gt;, or &lt;code&gt;auto&lt;/code&gt; to return to the window tuned for your model; the value is saved to user settings and applied to the current session. Requires Claude Code v2.1.221 or later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking settings, permissions and usage
&lt;/h2&gt;

&lt;p&gt;The next most frequent group answers "what is the state of things right now".&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What the docs say (condensed)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/permissions&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Interactive dialog for allow, ask and deny rules. View rules by scope, add or remove them, manage working directories, and review recent auto mode denials. The &lt;strong&gt;Auto mode&lt;/strong&gt; tab also shows and edits classifier rules. Alias &lt;code&gt;/allowed-tools&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/config [key=value ...]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open the Settings interface, or set a value directly without opening it, such as &lt;code&gt;/config theme=dark&lt;/code&gt;. &lt;code&gt;/config --help&lt;/code&gt; lists the keys it accepts. Alias &lt;code&gt;/settings&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open Settings on the Status tab: version, model, account and connectivity. Works while Claude is responding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/usage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Usage. &lt;code&gt;/cost&lt;/code&gt; is "Alias for &lt;code&gt;/usage&lt;/code&gt;", and &lt;code&gt;/stats&lt;/code&gt; opens it on the Stats tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/memory&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edit &lt;code&gt;CLAUDE.md&lt;/code&gt; files, enable or disable auto memory, and view auto memory entries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/hooks&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;View hook configurations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/mcp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Manage MCP server connections and OAuth. Pass &lt;code&gt;reconnect&lt;/code&gt;, &lt;code&gt;enable&lt;/code&gt; or &lt;code&gt;disable&lt;/code&gt; with a server name or &lt;code&gt;all&lt;/code&gt; to change state without opening the list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/add-dir &amp;lt;path&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Add a working directory for file access during this session. Partial paths suggest matches; &lt;code&gt;Tab&lt;/code&gt; accepts one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/cd &amp;lt;path&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Move the session to a new working directory, keeping the conversation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;/add-dir&lt;/code&gt; carries a caveat worth knowing: "Most &lt;code&gt;.claude/&lt;/code&gt; configuration isn't discovered from the added directory." For reading the permissions dialog, see &lt;a href="https://aicoding-guide.com/en/posts/claude-code-permissions-command/" rel="noopener noreferrer"&gt;Claude Code /permissions shows every rule and the settings file it came from&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handing the work itself over, with Skills and Workflows
&lt;/h2&gt;

&lt;p&gt;Some rows in the list carry a marker. The official definitions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Glossary&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Skill&lt;/strong&gt;: "a bundled skill. It works like skills you write yourself: a prompt handed to Claude."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workflow&lt;/strong&gt;: "a bundled dynamic workflow that fans work out across many subagents and runs in the background."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Both only run on demand — the docs make the point with &lt;code&gt;/verify&lt;/code&gt; and &lt;code&gt;/deep-research&lt;/code&gt;: "runs only when you invoke it."&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/code-review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skill&lt;/td&gt;
&lt;td&gt;Review the current diff, or a PR number, branch or path you pass, for correctness bugs. &lt;code&gt;--fix&lt;/code&gt; applies findings, &lt;code&gt;--comment&lt;/code&gt; posts them to the PR or merge request. Alias &lt;code&gt;/review&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/simplify [target]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skill&lt;/td&gt;
&lt;td&gt;Review changed code for cleanup opportunities and apply the fixes, with four review agents in parallel. "The review doesn't look for correctness bugs" — that is &lt;code&gt;/code-review&lt;/code&gt;'s job&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/debug [description]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skill&lt;/td&gt;
&lt;td&gt;Turn on debug logging for this session and troubleshoot from the log. Logging is off by default, so running it mid-session captures from that point forward&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/doctor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skill&lt;/td&gt;
&lt;td&gt;A setup checkup over installation, settings, extension and &lt;code&gt;CLAUDE.md&lt;/code&gt; problems, proposing fixes you confirm. Alias &lt;code&gt;/checkup&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/batch &amp;lt;instruction&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skill&lt;/td&gt;
&lt;td&gt;Parallelize a large change: decompose into 5 to 30 independent units, present a plan, then run one background subagent per unit in an isolated worktree&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/deep-research &amp;lt;question&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Workflow&lt;/td&gt;
&lt;td&gt;Fan out web searches, fetch and cross-check sources, and synthesize a cited report&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/security-review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Analyze the changes on your current branch for security vulnerabilities. Needs an &lt;code&gt;origin&lt;/code&gt; remote&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To build commands on the same mechanism yourself, see &lt;a href="https://aicoding-guide.com/en/posts/claude-code-custom-slash-commands/" rel="noopener noreferrer"&gt;Create your own slash commands in Claude Code with a single Markdown file&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands that never appear, and ones that went away
&lt;/h2&gt;

&lt;p&gt;A command can be in the list and still be missing from your session. That is by design: "Not every command appears for every user. Availability depends on your platform, plan, and environment." The docs give two examples.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/desktop&lt;/code&gt; shows only on macOS and x64 Windows, signed in with a Claude subscription&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/upgrade&lt;/code&gt; does not show on Enterprise plans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some commands are genuinely gone.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/pr-comments&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removed in v2.1.91. Ask Claude directly to view pull request comments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/ultraplan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removed. Use plan mode instead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/agents&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Now "Print a reminder to ask Claude to create or manage subagents". On v2.1.197 and earlier it opened an interactive management interface&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Some commands are only hidden from the menu&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;/heapdump&lt;/code&gt;, &lt;code&gt;/setup-bedrock&lt;/code&gt; and &lt;code&gt;/setup-vertex&lt;/code&gt; are documented as "Hidden from the command menu" — they do not autocomplete, but typing them in full works. Setting &lt;code&gt;CLAUDE_CODE_USE_BEDROCK=1&lt;/code&gt; or &lt;code&gt;CLAUDE_CODE_USE_VERTEX=1&lt;/code&gt; makes the matching wizard appear in the menu.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The official built-in list is at &lt;code&gt;/docs/en/commands&lt;/code&gt;; &lt;code&gt;/docs/en/slash-commands&lt;/code&gt; is now the skills page&lt;/li&gt;
&lt;li&gt;The table has two columns, and &lt;code&gt;&amp;lt;arg&amp;gt;&lt;/code&gt; is required while &lt;code&gt;[arg]&lt;/code&gt; is optional&lt;/li&gt;
&lt;li&gt;The daily six are &lt;code&gt;/clear&lt;/code&gt;, &lt;code&gt;/compact&lt;/code&gt;, &lt;code&gt;/context&lt;/code&gt;, &lt;code&gt;/model&lt;/code&gt;, &lt;code&gt;/resume&lt;/code&gt; and &lt;code&gt;/rewind&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Skill means a prompt handed to Claude; Workflow means work fanned out across subagents. Both run only when invoked&lt;/li&gt;
&lt;li&gt;Platform, plan and environment decide what you see, so check your own list with &lt;code&gt;/help&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>claudecode</category>
      <category>slashcommands</category>
      <category>commandreference</category>
      <category>cli</category>
    </item>
    <item>
      <title>What changed in Codex CLI v0.167, codex agents and the auto-compaction fix</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Sun, 08 Nov 2026 19:27:07 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/what-changed-in-codex-cli-v0167-codex-agents-and-the-auto-compaction-fix-542b</link>
      <guid>https://dev.to/aicoding-guide/what-changed-in-codex-cli-v0167-codex-agents-and-the-auto-compaction-fix-542b</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-167/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Codex CLI v0.167.0 ships six new features, six bug fixes, two documentation changes and two chores. Two of them matter for everyday work: the &lt;strong&gt;agent command center&lt;/strong&gt; gets unread markers, and &lt;strong&gt;automatic context compaction&lt;/strong&gt; now counts tokens it used to miss.&lt;/p&gt;

&lt;p&gt;One caveat first. This release contains a flag spelling that the official documentation contradicts outright, so it is worth knowing before a command fails on you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What you will learn&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What &lt;code&gt;codex agents&lt;/code&gt; opens, and whether you may pass &lt;code&gt;--no-daemon&lt;/code&gt; to it&lt;/li&gt;
&lt;li&gt;What automatic context compaction now counts, and where to set its threshold&lt;/li&gt;
&lt;li&gt;Which v0.167.0 settings are still missing from the configuration reference&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Opening the agent command center with codex agents
&lt;/h2&gt;

&lt;p&gt;The first release note reads: "Open the agent command center with &lt;code&gt;codex agents --no-daemon&lt;/code&gt;. The command center and session picker now mark unread results". The screen that lists chats on a shared server now flags results you have not read.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;codex agents&lt;/code&gt; itself is documented, with maturity Stable. The command overview describes it as "Open the agent command center on a shared local or remote server", and its own section as "Open the command center to browse chats and switch between agents on a shared server".&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--remote &amp;lt;URL&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Connect to a remote server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--cd &amp;lt;DIR&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Set the directory used for new remote tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--remote-auth-token-env&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A global flag, documented as requiring &lt;code&gt;--remote&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can reach the same screen from inside the TUI with &lt;code&gt;/agents&lt;/code&gt;, listed in the slash-command table as "Open the agent command center." with the when-to-use note "Browse chats and switch between agents on the connected server." A separate &lt;code&gt;/subagents&lt;/code&gt; command switches the active subagent thread.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The docs say --no-daemon cannot be combined with codex agents&lt;/strong&gt;&lt;br&gt;
As of 2026-11-09 the &lt;code&gt;codex agents&lt;/code&gt; section states "&lt;code&gt;codex agents&lt;/code&gt; doesn't support &lt;code&gt;--no-daemon&lt;/code&gt;". The global &lt;code&gt;--no-daemon&lt;/code&gt; flag ("Run the interactive CLI without the shared background server.") carries the matching note "Can't be combined with &lt;code&gt;--remote&lt;/code&gt; or &lt;code&gt;codex agents&lt;/code&gt;". The v0.167.0 release notes spell the command with that flag anyway. &lt;strong&gt;Which one reflects the current implementation could not be confirmed in the official documentation.&lt;/strong&gt; Start with a plain &lt;code&gt;codex agents&lt;/code&gt; and only reach for the flag if that fails.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Automatic compaction now counts failed responses
&lt;/h2&gt;

&lt;p&gt;The widest-reaching fix is: "Automatic context compaction now accounts for retained output from failed responses and responses with missing token usage data". Retained output from failed responses, and responses whose token usage never arrived, now feed into the compaction decision.&lt;/p&gt;

&lt;p&gt;Until now those tokens went uncounted, so Codex judged compaction against a figure lower than real consumption. That is exactly the kind of drift that lets a long session run out of context without compaction ever firing.&lt;/p&gt;

&lt;p&gt;The threshold lives in &lt;code&gt;config.toml&lt;/code&gt;. These four keys are the ones documented today.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="c"&gt;# Token threshold that triggers automatic history compaction&lt;/span&gt;
&lt;span class="n"&gt;model_auto_compact_token_limit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;300000&lt;/span&gt;

&lt;span class="c"&gt;# How the threshold is counted: "total" counts the full active context,&lt;/span&gt;
&lt;span class="c"&gt;# "body_after_prefix" counts only growth after the carried compaction prefix&lt;/span&gt;
&lt;span class="n"&gt;model_auto_compact_token_limit_scope&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"total"&lt;/span&gt;

&lt;span class="c"&gt;# Turn-end compaction, as a percentage of the usable context window&lt;/span&gt;
&lt;span class="n"&gt;model_post_turn_compact_threshold_percent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;85&lt;/span&gt;

&lt;span class="c"&gt;# Replace the prompt used for compaction&lt;/span&gt;
&lt;span class="n"&gt;compact_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Summarize the work so far, keeping file paths and decisions."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model_auto_compact_token_limit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Token threshold for automatic compaction. Unset uses model defaults&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model_auto_compact_token_limit_scope&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;total&lt;/code&gt; / &lt;code&gt;body_after_prefix&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Defaults to &lt;code&gt;total&lt;/code&gt;, which counts the full active context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model_post_turn_compact_threshold_percent&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;integer 0–100&lt;/td&gt;
&lt;td&gt;Omit or set &lt;code&gt;0&lt;/code&gt; to disable turn-end compaction. The usual auto-compaction limits still apply&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;compact_prompt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Inline override for the compaction prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To compact by hand, use &lt;code&gt;/compact&lt;/code&gt;, documented as "Summarize the visible chat to free tokens." with the advice "Use after long runs so Codex retains key points without blowing the context window." For the rest of the file, see &lt;a href="https://aicoding-guide.com/en/posts/codex-config-toml/" rel="noopener noreferrer"&gt;How to write Codex config.toml and its main settings keys&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vertex AI and system proxy settings are not in the reference yet
&lt;/h2&gt;

&lt;p&gt;Two release notes touch configuration, and neither has reached the configuration reference.&lt;/p&gt;

&lt;p&gt;The first reads: "Find API key and cloud provider options under 'Sign in another way.' Enable &lt;code&gt;gcp_setup_wizard&lt;/code&gt; to set up Google Cloud Vertex AI with Application Default Credentials or a credential file". &lt;strong&gt;A key named &lt;code&gt;gcp_setup_wizard&lt;/code&gt; could not be found in the configuration reference as of 2026-11-09.&lt;/strong&gt; These are the Vertex AI keys that are documented.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model_providers.gcp.project_id&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Cloud project ID for the Vertex AI endpoint. Takes precedence over &lt;code&gt;GOOGLE_CLOUD_PROJECT&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model_providers.gcp.location&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Location for the Vertex AI endpoint. Takes precedence over &lt;code&gt;GOOGLE_CLOUD_LOCATION&lt;/code&gt;, defaults to &lt;code&gt;global&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model_providers.gcp.credential_file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Absolute path to an Application Default Credentials file. Overrides &lt;code&gt;GOOGLE_APPLICATION_CREDENTIALS&lt;/code&gt; only for the provider's authentication command&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model_providers.gcp.base_url&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Override the built-in Vertex AI endpoint. Otherwise Codex builds it from the project ID and location&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The second reads: "Opt into macOS or Windows system proxy settings from &lt;code&gt;/experimental&lt;/code&gt;". The &lt;code&gt;/experimental&lt;/code&gt; command is documented ("Toggle experimental features." / "Enable options such as Network proxy or Prevent sleep while running."), and so is the matching key &lt;code&gt;features.network_proxy&lt;/code&gt; ("Start the network proxy for sandboxed commands (experimental; off by default)."). But &lt;strong&gt;reading the operating system's proxy configuration, and the handling of variables such as &lt;code&gt;HTTP_PROXY&lt;/code&gt;, could not be confirmed on those two pages.&lt;/strong&gt; Environment-variable behaviour lives on a separate page, so check that before you turn the setting on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The remaining fixes
&lt;/h2&gt;

&lt;p&gt;The rest of the release is about keeping state that used to be dropped.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saved chats stay visible after you switch model providers. If a chat cannot resume, you can still read its transcript and prepare an editable prompt to continue elsewhere&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+L&lt;/code&gt; clears the terminal display while earlier messages stay reachable through &lt;code&gt;Ctrl+T&lt;/code&gt;. The docs confirm only the first half, "&lt;code&gt;Ctrl+L&lt;/code&gt; only clears the terminal view and keeps the current chat." — &lt;strong&gt;no documentation for &lt;code&gt;Ctrl+T&lt;/code&gt; could be found&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Deleting text that exposes a leading &lt;code&gt;!&lt;/code&gt; keeps an ordinary draft in chat mode&lt;/li&gt;
&lt;li&gt;Network approval prompts close when their requests end, and concurrent requests to the same endpoint prompt one at a time&lt;/li&gt;
&lt;li&gt;Long realtime V3 conversations save completed speech into chat history as the transcript grows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the documentation side, the app-server README now covers managed network constraints under &lt;code&gt;[permissions.network]&lt;/code&gt; and &lt;code&gt;prompt-user&lt;/code&gt; command rules that require fresh human approval. Note that the configuration reference has no section by that literal name: it documents &lt;strong&gt;named profiles as &lt;code&gt;[permissions.&amp;lt;name&amp;gt;]&lt;/code&gt; with &lt;code&gt;network.*&lt;/code&gt; keys beneath them&lt;/strong&gt;. For how approvals and sandboxing interact, see &lt;a href="https://aicoding-guide.com/en/posts/codex-approval-sandbox/" rel="noopener noreferrer"&gt;Codex approval_policy and sandbox_mode combinations&lt;/a&gt;; for the previous release, see &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-166/" rel="noopener noreferrer"&gt;What changed in Codex CLI v0.166, codex queue --resume and codex doctor --network-only&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The headline changes in v0.167.0 are unread markers in the agent command center and drafts that survive a backend switch&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;codex agents&lt;/code&gt; is a Stable command, but the docs deny that it accepts &lt;code&gt;--no-daemon&lt;/code&gt;, contradicting the release notes; which one is current could not be confirmed&lt;/li&gt;
&lt;li&gt;Automatic context compaction now counts retained output from failed responses and responses with missing usage data&lt;/li&gt;
&lt;li&gt;Tune the threshold with &lt;code&gt;model_auto_compact_token_limit&lt;/code&gt; and &lt;code&gt;model_auto_compact_token_limit_scope&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gcp_setup_wizard&lt;/code&gt; and the system-proxy option do not appear in the configuration reference pages checked here&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codex</category>
      <category>codexcli</category>
      <category>releasenotes</category>
      <category>codexagents</category>
    </item>
    <item>
      <title>This week in Claude Code, Codex and Gemini CLI (week of November 8, 2026)</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Sat, 07 Nov 2026 19:10:05 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/this-week-in-claude-code-codex-and-gemini-cli-week-of-november-8-2026-485k</link>
      <guid>https://dev.to/aicoding-guide/this-week-in-claude-code-codex-and-gemini-cli-week-of-november-8-2026-485k</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/weekly-2026-11-08/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The change with the widest reach this week is that &lt;strong&gt;auto mode no longer falls back to the built-in classifier&lt;/strong&gt;. Where telemetry or feature flags are off, including behind an LLM gateway, calls the server cannot check are &lt;strong&gt;asked about or denied&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For unattended runs, &lt;code&gt;permissions.denyInsteadOfPrompting&lt;/code&gt; is new: instead of stalling on a prompt, the call is denied and the turn continues.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
This week in brief&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto mode asks about or denies calls the server can't check, with no classifier fallback&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;permissions.denyInsteadOfPrompting&lt;/code&gt; replaces a stalled prompt with a denial&lt;/li&gt;
&lt;li&gt;Web and shell tool calls now ask before sending your account email address&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Claude Code
&lt;/h2&gt;

&lt;p&gt;Three releases: 2.1.317, 2.1.318 and 2.1.319.&lt;/p&gt;

&lt;h3&gt;
  
  
  Auto mode lost its fallback (2.1.319)
&lt;/h3&gt;

&lt;p&gt;The CHANGELOG reads: "Changed auto mode with telemetry or feature flags off, including behind LLM gateways: calls the server can't check are asked about or denied, with no fallback to the built-in classifier; set &lt;code&gt;CLAUDE_CODE_AUTO_MODE_SERVER=0&lt;/code&gt; to keep using it (Bedrock, Vertex and Foundry are unchanged)."&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Environment&lt;/th&gt;
&lt;th&gt;Effect&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Telemetry or feature flags off&lt;/td&gt;
&lt;td&gt;Calls the server can't check are asked about or denied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behind an LLM gateway&lt;/td&gt;
&lt;td&gt;The same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bedrock / Vertex / Foundry&lt;/td&gt;
&lt;td&gt;Unchanged&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;CLAUDE_CODE_AUTO_MODE_SERVER=0&lt;/code&gt; restores the previous behaviour of using the built-in classifier. In the other direction, &lt;code&gt;CLAUDE_CODE_AUTO_MODE_SERVER=1&lt;/code&gt; turns the server-side check on behind a gateway even with &lt;code&gt;CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS&lt;/code&gt; set — and where managed settings set the latter, they must set the &lt;code&gt;1&lt;/code&gt; too.&lt;/p&gt;

&lt;p&gt;Relatedly, &lt;code&gt;/status&lt;/code&gt; no longer reports "Auto mode server: Enabled" when the server-side review is not actually reaching the session. For how the modes differ, see &lt;a href="https://aicoding-guide.com/en/posts/claude-code-default-mode/" rel="noopener noreferrer"&gt;Claude Code starts in auto mode by default&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  New settings and variables (2.1.319)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;permissions.denyInsteadOfPrompting&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Denies a call that would wait on a permission prompt and continues the turn, in terminal sessions, subagents and teammates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_CODE_DISABLE_FEATURE_FLAGS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stops feature-flag fetching without turning telemetry off; every flag uses its built-in default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Waits for an MCP task inside its tool call instead of backgrounding it immediately&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;MCP tasks are now supported in the terminal: when a server runs a tool call as a task, Claude Code moves it to the background right away and reports the result when it finishes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disabling feature flags also stops idle compaction&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CLAUDE_CODE_DISABLE_FEATURE_FLAGS&lt;/code&gt; stops flag fetching while leaving telemetry on. One of idle compaction's conditions is that Claude Code can fetch feature flags from Anthropic, so setting this variable stops it running. For the full list of conditions, see &lt;a href="https://aicoding-guide.com/en/posts/claude-code-autocompact-window/" rel="noopener noreferrer"&gt;Making Claude Code compact earlier, or never&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  A check before your email address goes out (2.1.317)
&lt;/h3&gt;

&lt;p&gt;New in 2.1.317: "Added a check that asks before a web or shell tool call sends your account email address to the network."&lt;/p&gt;

&lt;p&gt;Three security fixes also landed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;code&gt;sed&lt;/code&gt; command could skip the permission check in accept-edits and auto mode (2.1.319)&lt;/li&gt;
&lt;li&gt;Bash deny and ask rules missed commands written with quoted words (2.1.319)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/rewind&lt;/code&gt; could restore or delete a file through a directory symlink (2.1.319)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sign-in expiry is now visible (2.1.318)
&lt;/h3&gt;

&lt;p&gt;This one matters for unattended runs. The expiry date of a stored claude.ai sign-in is now available as &lt;code&gt;loginExpiresAt&lt;/code&gt; in &lt;code&gt;claude auth status&lt;/code&gt; and &lt;code&gt;credential_expires_at&lt;/code&gt; in &lt;code&gt;claude -p&lt;/code&gt; JSON results, with a one-line stderr warning starting 10 days before.&lt;/p&gt;

&lt;p&gt;The release itself is mostly fixes for configuration files and stored logins being corrupted on network home directories, so it is worth taking if you run on a shared home. Claude Code also no longer installs or updates the IDE extension when started from an IDE terminal; use &lt;code&gt;/ide&lt;/code&gt; from an outside terminal instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Codex
&lt;/h2&gt;

&lt;p&gt;v0.167.0 ships six features.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Addition&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;codex agents --no-daemon&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Opens the agent command center; it and the session picker now mark unread results&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend switching&lt;/td&gt;
&lt;td&gt;Switch between connected backends from the terminal session picker, keeping drafts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image preview&lt;/td&gt;
&lt;td&gt;Preview local image attachments while composing, on supported terminals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gcp_setup_wizard&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets up Google Cloud Vertex AI with Application Default Credentials or a credential file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System proxy&lt;/td&gt;
&lt;td&gt;Opt into macOS or Windows system proxy settings from &lt;code&gt;/experimental&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patch details&lt;/td&gt;
&lt;td&gt;Expand patch details in the transcript while an approval prompt is open&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;gcp_setup_wizard&lt;/code&gt; continues from v0.165.0, which made Vertex AI a built-in provider via &lt;code&gt;model_provider = "gcp"&lt;/code&gt; — see &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-165/" rel="noopener noreferrer"&gt;Codex CLI v0.165 makes Vertex AI a built-in provider&lt;/a&gt;. The API key and cloud provider options moved under the "Sign in another way" menu.&lt;/p&gt;

&lt;p&gt;Three fixes stand out. Saved chats stay visible after switching model providers, and a chat that cannot resume can still be read and turned into an editable prompt for a new chat. Network approval prompts close when their requests end, and concurrent requests to the same endpoint prompt one at a time. Automatic context compaction now accounts for retained output from failed responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini CLI
&lt;/h2&gt;

&lt;p&gt;v0.67.0 (November 4) has two features among 27 entries: the &lt;code&gt;models&lt;/code&gt; command, and the fix for a Claude hook timeout that migrated 1000x too small. See &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-67/" rel="noopener noreferrer"&gt;Gemini CLI v0.67 adds a models command and fixes the unit in Claude hook migration&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to check now
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If you run auto mode behind an LLM gateway, note the 2.1.319 change and set &lt;code&gt;CLAUDE_CODE_AUTO_MODE_SERVER&lt;/code&gt; if needed&lt;/li&gt;
&lt;li&gt;For unattended runs that must not stall, consider &lt;code&gt;permissions.denyInsteadOfPrompting&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check your sign-in expiry with &lt;code&gt;claude auth status&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Move to 2.1.318 if you run on a network home directory&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Auto mode asks about or denies calls the server can't check, with no classifier fallback&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CLAUDE_CODE_AUTO_MODE_SERVER=0&lt;/code&gt; restores the old behaviour; Bedrock, Vertex and Foundry are unchanged&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;permissions.denyInsteadOfPrompting&lt;/code&gt; turns a stalled prompt into a denial&lt;/li&gt;
&lt;li&gt;Web and shell tool calls ask before sending your account email address&lt;/li&gt;
&lt;li&gt;Codex 0.167.0 adds &lt;code&gt;gcp_setup_wizard&lt;/code&gt; and opt-in system proxy settings&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>weeklydigest</category>
      <category>updates</category>
      <category>claudecode</category>
      <category>codex</category>
    </item>
    <item>
      <title>Gemini CLI v0.67 adds a models command and fixes the unit in Claude hook migration</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Thu, 05 Nov 2026 19:17:46 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/gemini-cli-v067-adds-a-models-command-and-fixes-the-unit-in-claude-hook-migration-5b98</link>
      <guid>https://dev.to/aicoding-guide/gemini-cli-v067-adds-a-models-command-and-fixes-the-unit-in-claude-hook-migration-5b98</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-67/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Gemini CLI v0.67.0 carries 27 changes: two features and 22 fixes.&lt;/p&gt;

&lt;p&gt;One of those fixes had real consequences for anyone running both Claude Code and Gemini CLI. Migrating a Claude hook configuration made its timeout &lt;strong&gt;1000 times smaller&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What this article covers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Listing models with the &lt;code&gt;models&lt;/code&gt; command and &lt;code&gt;--list-models&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Claude's hook &lt;code&gt;timeout&lt;/code&gt; is seconds; Gemini's is milliseconds&lt;/li&gt;
&lt;li&gt;The IDE companion now works inside container sandboxes&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A models command for listing models
&lt;/h2&gt;

&lt;p&gt;PR #29880 adds a &lt;code&gt;models&lt;/code&gt; command and a &lt;code&gt;--list-models&lt;/code&gt; flag for model discovery.&lt;/p&gt;

&lt;p&gt;Until now there was no direct way to see which models you could pass to &lt;code&gt;-m&lt;/code&gt;. This fills that gap.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Not in the documentation yet&lt;/strong&gt;&lt;br&gt;
As of 2026-11-06, neither the &lt;code&gt;models&lt;/code&gt; command nor &lt;code&gt;--list-models&lt;/code&gt; appears in the official documentation. v0.67.0 shipped on November 4, and the docs have not caught up. Check &lt;code&gt;--help&lt;/code&gt; locally for the output format and options.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Migrating a Claude hook made its timeout 1000x smaller
&lt;/h2&gt;

&lt;p&gt;This is PR #29899: "fix(cli): convert Claude hook timeout from seconds to milliseconds during migration."&lt;/p&gt;

&lt;p&gt;The cause is a unit mismatch, visible when you put both references side by side.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Unit of &lt;code&gt;timeout&lt;/code&gt;
&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Seconds&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;600 for &lt;code&gt;command&lt;/code&gt; / &lt;code&gt;http&lt;/code&gt; / &lt;code&gt;mcp_tool&lt;/code&gt;, 30 for &lt;code&gt;prompt&lt;/code&gt;, 60 for &lt;code&gt;agent&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini CLI&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Milliseconds&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;60000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Claude Code's reference describes &lt;code&gt;timeout&lt;/code&gt; as "Seconds before canceling". Gemini CLI's says "Execution timeout in milliseconds (default: 60000)".&lt;/p&gt;

&lt;p&gt;So a Claude hook set to &lt;code&gt;timeout: 600&lt;/code&gt; (ten minutes), moved across without conversion, became &lt;strong&gt;600 milliseconds&lt;/strong&gt; on the Gemini side — short enough that almost any command times out immediately. If you migrated a configuration before v0.67.0, check those values.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"security-check"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$GEMINI_PROJECT_DIR/.gemini/hooks/security.sh"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"timeout"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The environment variable names differ too&lt;/strong&gt;&lt;br&gt;
The other thing easily missed in a migration is the environment. Gemini CLI passes hooks &lt;code&gt;GEMINI_PROJECT_DIR&lt;/code&gt;, &lt;code&gt;GEMINI_PLANS_DIR&lt;/code&gt;, &lt;code&gt;GEMINI_SESSION_ID&lt;/code&gt; and &lt;code&gt;GEMINI_CWD&lt;/code&gt;. A command string referencing Claude Code's &lt;code&gt;CLAUDE_PROJECT_DIR&lt;/code&gt; will not resolve when carried over as-is. The documentation also states hooks run with "a sanitized environment", so avoid relying on shell environment variables generally.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the Claude Code side of the contract, see &lt;a href="https://aicoding-guide.com/en/posts/claude-code-hooks-stdin-json/" rel="noopener noreferrer"&gt;Claude Code hook input and output&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Relatedly, PR #29867 preserves &lt;code&gt;${VAR}&lt;/code&gt; placeholders during deprecated settings migration. v0.66.0 fixed placeholder resolution after &lt;code&gt;.env&lt;/code&gt; files load, so this area has had attention in two consecutive releases.&lt;/p&gt;

&lt;h2&gt;
  
  
  IDE integration and containers
&lt;/h2&gt;

&lt;p&gt;The second feature is PR #29858, which bridges the IDE companion into container sandboxes over exec stdio — so IDE integration works where the sandbox runs in a container.&lt;/p&gt;

&lt;p&gt;Two IDE fixes also landed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IDE settings files and &lt;code&gt;GEMINI.md&lt;/code&gt; are excluded from the open-file context (PR #29848)&lt;/li&gt;
&lt;li&gt;Relative file paths resolve against the active IDE workspace root (PR #29838)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first avoids &lt;code&gt;GEMINI.md&lt;/code&gt; entering the context twice: it is already loaded as project context, so passing it again as an open file duplicates it. For how it is loaded, see &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-setup-gemini-md/" rel="noopener noreferrer"&gt;Installing Gemini CLI and writing GEMINI.md&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cancellation and display fixes
&lt;/h2&gt;

&lt;p&gt;Three fixes matter for unattended runs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Termination signals are handled in non-interactive mode, and tools no longer execute after cancellation (PR #29849)&lt;/li&gt;
&lt;li&gt;Continuation stream processing and auto-nudge stop after a request is cancelled (PR #29868)&lt;/li&gt;
&lt;li&gt;Project spending cap errors are classified as terminal quota errors (PR #29961)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The third stops pointless retries once a spending cap is reached.&lt;/p&gt;

&lt;p&gt;On display: Thai and Lao SARA AM width is corrected, and terminals that render ambiguous-width characters as wide are now handled. The latter may help where CJK text renders misaligned.&lt;/p&gt;

&lt;p&gt;Also fixed: duplicate agent loading when the workspace is the home directory, read-only files and hard links respected in atomic &lt;code&gt;writeTextFile&lt;/code&gt;, ripgrep resolution on Android (Termux), CRLF normalisation in &lt;code&gt;getDiffContextSnippet&lt;/code&gt;, and MCP server and tool metadata included in ACP permission requests. For the previous release, see &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-66/" rel="noopener noreferrer"&gt;Gemini CLI v0.66 is fixes only, with the keybindings.json keys array now working&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;v0.67.0 has two features and 22 fixes among 27 entries&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;models&lt;/code&gt; command and &lt;code&gt;--list-models&lt;/code&gt; list available models, though neither is documented yet&lt;/li&gt;
&lt;li&gt;Migrating a Claude hook made its timeout 1000x smaller: Claude uses seconds, Gemini milliseconds&lt;/li&gt;
&lt;li&gt;Environment variables need rewriting too, from &lt;code&gt;CLAUDE_PROJECT_DIR&lt;/code&gt; to &lt;code&gt;GEMINI_PROJECT_DIR&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The IDE companion now works inside container sandboxes&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gemini</category>
      <category>updates</category>
      <category>hooks</category>
      <category>models</category>
    </item>
    <item>
      <title>Gemini CLI v0.66 is fixes only, with the keybindings.json keys array now working</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Tue, 03 Nov 2026 19:17:47 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/gemini-cli-v066-is-fixes-only-with-the-keybindingsjson-keys-array-now-working-213k</link>
      <guid>https://dev.to/aicoding-guide/gemini-cli-v066-is-fixes-only-with-the-keybindingsjson-keys-array-now-working-213k</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-66/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Gemini CLI v0.66.0 adds no features. All 26 entries under "What's Changed" are fixes, refactors or release chores.&lt;/p&gt;

&lt;p&gt;One of them is the kind worth knowing about, though: &lt;strong&gt;a setting the documentation already describes was not actually working&lt;/strong&gt;. The &lt;code&gt;keys&lt;/code&gt; array in &lt;code&gt;keybindings.json&lt;/code&gt; works as of this release.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What this article covers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to write the &lt;code&gt;keys&lt;/code&gt; array, and what to check when a binding does nothing&lt;/li&gt;
&lt;li&gt;Settings placeholders now resolved after &lt;code&gt;.env&lt;/code&gt; files load&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.gitconfig&lt;/code&gt; preserved in shell and git environments&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The keys array in keybindings.json now works
&lt;/h2&gt;

&lt;p&gt;The fix is PR #29773. Key bindings live in your home gemini directory, typically &lt;code&gt;~/.gemini/keybindings.json&lt;/code&gt;. It is a JSON array in a schema close to VS Code's, with a &lt;code&gt;command&lt;/code&gt; and either a &lt;code&gt;key&lt;/code&gt; or a &lt;code&gt;keys&lt;/code&gt; array per entry.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"edit.clear"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cmd+l"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"-app.toggleYolo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ctrl+y"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"-input.newline"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"keys"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"alt+enter"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ctrl+enter"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"shift+enter"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ctrl+j"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"input.newline"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"keys"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"enter"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"shift+enter"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Form&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;-&lt;/code&gt; prefixed on &lt;code&gt;command&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Unbinds the key, defaults included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A &lt;code&gt;keys&lt;/code&gt; array&lt;/td&gt;
&lt;td&gt;Binds or unbinds several keys in one entry; the first key is the primary shortcut shown in the UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modifiers&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ctrl&lt;/code&gt;, &lt;code&gt;shift&lt;/code&gt;, &lt;code&gt;alt&lt;/code&gt; (&lt;code&gt;opt&lt;/code&gt; / &lt;code&gt;option&lt;/code&gt;), &lt;code&gt;cmd&lt;/code&gt; (&lt;code&gt;meta&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;When a binding never fires, suspect the terminal&lt;/strong&gt;&lt;br&gt;
The documentation notes that terminals often translate complex combinations into special characters, losing the modifier information on the way. Its example is &lt;code&gt;shift+5&lt;/code&gt; arriving as &lt;code&gt;%&lt;/code&gt;, where "you must bind to the literal character &lt;code&gt;%&lt;/code&gt; as bindings to &lt;code&gt;shift+5&lt;/code&gt; will never fire." To see exactly what is sent, enable &lt;code&gt;Debug Keystroke Logging&lt;/code&gt; and press &lt;code&gt;f12&lt;/code&gt; to open the debug log console.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Matching is explicit: a binding for &lt;code&gt;ctrl+f&lt;/code&gt; fires on &lt;code&gt;ctrl+f&lt;/code&gt; only, not &lt;code&gt;ctrl+shift+f&lt;/code&gt; or &lt;code&gt;alt+ctrl+f&lt;/code&gt;. And because the same key can be bound to different commands in different contexts, &lt;strong&gt;adding a binding does not unbind the key from anything else&lt;/strong&gt;. To remove the old one, add a separate &lt;code&gt;-&lt;/code&gt; prefixed entry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixes around .env and the git environment
&lt;/h2&gt;

&lt;p&gt;Three fixes concern the order configuration is loaded in.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;PR&lt;/th&gt;
&lt;th&gt;What changed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#29750&lt;/td&gt;
&lt;td&gt;Settings placeholders are resolved &lt;strong&gt;after&lt;/strong&gt; &lt;code&gt;.env&lt;/code&gt; files load&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;#29832&lt;/td&gt;
&lt;td&gt;The user-level &lt;code&gt;~/.gitconfig&lt;/code&gt; is preserved in shell and git environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;#29760&lt;/td&gt;
&lt;td&gt;Interactive credential and SSH prompts are disabled in &lt;code&gt;getSafeGitEnv&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The first matters if your settings file references a value defined in &lt;code&gt;.env&lt;/code&gt;. Resolving before the load leaves the reference empty.&lt;/p&gt;

&lt;p&gt;A related documented setting is &lt;code&gt;advanced.ignoreLocalEnv&lt;/code&gt; (default &lt;code&gt;false&lt;/code&gt;), which controls whether generic &lt;code&gt;.env&lt;/code&gt; files in the project directory are ignored — the lever to reach for when a project's &lt;code&gt;.env&lt;/code&gt; should not be read at all.&lt;/p&gt;

&lt;p&gt;The third matters for unattended runs. When git asks for a credential or an SSH passphrase interactively, nobody is there to answer and the run hangs. Disabling those prompts makes it fail instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP and authentication fixes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP OAuth supports private network endpoints&lt;/strong&gt; (PR #29844), on an opt-in basis — relevant when the MCP server lives inside your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;False positives in &lt;code&gt;isAuthenticationError&lt;/code&gt;&lt;/strong&gt; are prevented (PR #29835), where non-authentication failures were classified as authentication errors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update verification tightened&lt;/strong&gt; (PR #29757): the active binary is checked after an update, so a &lt;code&gt;PATH&lt;/code&gt;-shadowed older binary is no longer reported as a successful update&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For MCP configuration generally, see &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-mcp/" rel="noopener noreferrer"&gt;Setting up MCP servers in Gemini CLI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rest, and a Gemini 4 banner
&lt;/h2&gt;

&lt;p&gt;The visible addition is a &lt;strong&gt;banner saying Gemini CLI is not optimized for Gemini 4&lt;/strong&gt; (PR #29774).&lt;/p&gt;

&lt;p&gt;On rendering: synchronized output with isolated spinner rendering, debug console height calculation and flickering, right-hand border bleed in scrollable tool containers, preserved terminal scrollback during viewport refreshes, and rounding before unit selection in &lt;code&gt;formatDuration&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Also: &lt;code&gt;openDiff&lt;/code&gt; now formats and quotes Windows diff command arguments, &lt;code&gt;SKILL.md&lt;/code&gt; frontmatter parsing handles single-line descriptions, slash-command conflict dedupe resets when conflicts reappear, and the bootstrap parent forwards termination signals to its child process.&lt;/p&gt;

&lt;p&gt;For the previous release, see &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-65/" rel="noopener noreferrer"&gt;Gemini CLI v0.65 enforces read-only settings in untrusted folders&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;v0.66.0 adds no features; all 26 "What's Changed" entries are fixes, refactors or release chores&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;keys&lt;/code&gt; array in &lt;code&gt;keybindings.json&lt;/code&gt; works now; unbind by prefixing &lt;code&gt;command&lt;/code&gt; with &lt;code&gt;-&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;When a binding never fires, check what the terminal sends with &lt;code&gt;Debug Keystroke Logging&lt;/code&gt; and &lt;code&gt;f12&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Settings placeholders are resolved after &lt;code&gt;.env&lt;/code&gt; files load&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.gitconfig&lt;/code&gt; is preserved, and git's interactive prompts are disabled&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gemini</category>
      <category>updates</category>
      <category>keybindingsjson</category>
      <category>bugfixes</category>
    </item>
    <item>
      <title>Codex CLI v0.166 adds codex queue --resume and codex doctor --network-only</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Sun, 01 Nov 2026 19:15:17 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/codex-cli-v0166-adds-codex-queue-resume-and-codex-doctor-network-only-5ae0</link>
      <guid>https://dev.to/aicoding-guide/codex-cli-v0166-adds-codex-queue-resume-and-codex-doctor-network-only-5ae0</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-166/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Codex CLI v0.166.0 ships six features and seven fixes. Two matter day to day: &lt;strong&gt;&lt;code&gt;codex queue --resume&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;codex doctor --network-only&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Both are flags on existing commands, so knowing what each command already does is the quickest way to see what changed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What this article covers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How &lt;code&gt;codex queue&lt;/code&gt; works and the situation &lt;code&gt;--resume&lt;/code&gt; fixes&lt;/li&gt;
&lt;li&gt;What &lt;code&gt;codex doctor&lt;/code&gt; checks, and what &lt;code&gt;--network-only&lt;/code&gt; narrows it to&lt;/li&gt;
&lt;li&gt;Approval settings and token accounting now surviving resume and fork&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  codex queue --resume resumes the thread
&lt;/h2&gt;

&lt;p&gt;The release notes read: "Added &lt;code&gt;codex queue --resume&lt;/code&gt; to resume unloaded threads after queueing a message."&lt;/p&gt;

&lt;p&gt;&lt;code&gt;codex queue&lt;/code&gt; itself is documented: it queues a text message for an existing session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex queue &lt;span class="nt"&gt;--thread&lt;/span&gt; &amp;lt;SESSION_ID&amp;gt; &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Run the remaining checks"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--thread&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A UUID or an exact session name; use a UUID when sessions share a name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--message&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The text to queue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Others&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;--remote&lt;/code&gt; and &lt;code&gt;--remote-auth-token-env&lt;/code&gt; are accepted; image attachments are not&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Previously, queueing a message to a thread that was not loaded left it waiting. With &lt;code&gt;--resume&lt;/code&gt;, queueing and resuming happen in one step — useful when a script or CI job adds work to an existing session.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;--resume is not in the commands documentation&lt;/strong&gt;&lt;br&gt;
As of 2026-11-02, the flags documented for &lt;code&gt;codex queue&lt;/code&gt; are &lt;code&gt;--thread&lt;/code&gt;, &lt;code&gt;--message&lt;/code&gt;, &lt;code&gt;--remote&lt;/code&gt; and &lt;code&gt;--remote-auth-token-env&lt;/code&gt;. There is no entry for &lt;code&gt;--resume&lt;/code&gt;; it appears only in the release notes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  codex doctor --network-only narrows the report
&lt;/h2&gt;

&lt;p&gt;The other addition: "Added &lt;code&gt;codex doctor --network-only&lt;/code&gt; for focused configuration, connectivity, and WebSocket diagnostics."&lt;/p&gt;

&lt;p&gt;&lt;code&gt;codex doctor&lt;/code&gt; is the diagnostic command to run before filing a support issue or while investigating a broken installation. The documentation describes its scope as "installation, configuration, authentication, runtime, Git, terminal, app-server, and thread inventory health".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# The full report&lt;/span&gt;
codex doctor

&lt;span class="c"&gt;# Narrowed to configuration, connectivity and WebSocket&lt;/span&gt;
codex doctor &lt;span class="nt"&gt;--network-only&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The full report includes the thread inventory, so it takes a while. When the symptom is clearly network-side — connections failing behind a proxy, WebSockets dropping — &lt;code&gt;--network-only&lt;/code&gt; is the faster path.&lt;/p&gt;

&lt;p&gt;This flag could not be confirmed in the documentation either: &lt;code&gt;codex doctor&lt;/code&gt;'s option table is rendered dynamically on that page, so individual flags are not readable from the Markdown.&lt;/p&gt;

&lt;p&gt;For the network proxy settings themselves, see &lt;a href="https://aicoding-guide.com/en/posts/codex-approval-sandbox/" rel="noopener noreferrer"&gt;Combining approval_policy and sandbox_mode in Codex&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Transcript handling and the other features
&lt;/h2&gt;

&lt;p&gt;The remaining four are display and interaction changes.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Addition&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Transcript selection&lt;/td&gt;
&lt;td&gt;Keyboard-driven, with word, line and page motions, integrated search, and configurable shortcuts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Markdown rendering&lt;/td&gt;
&lt;td&gt;Made consistent in async questions, choices, answers and transcript replies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6.1 Terra&lt;/td&gt;
&lt;td&gt;Added to the bundled, Vertex AI and Amazon Bedrock model catalogs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safety-block explanations&lt;/td&gt;
&lt;td&gt;Clearer reasons in the TUI, with selectable safer follow-up prompts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;GPT-6.1 Terra reached the bundled catalog in v0.165.0; v0.166.0 adds it to the Vertex AI and Amazon Bedrock catalogs. That follows v0.165.0 making Vertex AI a built-in provider via &lt;code&gt;model_provider = "gcp"&lt;/code&gt; — see &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-165/" rel="noopener noreferrer"&gt;Codex CLI v0.165 makes Vertex AI a built-in provider&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixes around resume and fork
&lt;/h2&gt;

&lt;p&gt;Two of the seven fixes concern resuming and forking sessions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Approval and permission settings persist&lt;/strong&gt;: "Preserved acknowledged approval and permission settings when resuming or forking threads."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reasoning-token accounting persists&lt;/strong&gt;: "Preserved reasoning-token accounting across resume and fork to avoid premature compaction."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second has the clearer practical effect. When the accounting reset, a resumed session could be judged to have met the compaction threshold while it actually had room left, so context was lost earlier than it needed to be.&lt;/p&gt;

&lt;p&gt;Also fixed: spawned descendant threads are restored when their parent is unarchived, app-server thread startup and shutdown races are resolved with completed runtimes released promptly, and TUI reconnection recovery now handles offline &lt;code&gt;/quit&lt;/code&gt; and &lt;code&gt;/exit&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;codex queue --resume&lt;/code&gt; queues a message and resumes an unloaded thread in one step&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;codex queue&lt;/code&gt; takes a UUID or exact session name in &lt;code&gt;--thread&lt;/code&gt; and does not support image attachments&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;codex doctor --network-only&lt;/code&gt; narrows diagnostics to configuration, connectivity and WebSocket&lt;/li&gt;
&lt;li&gt;Approval settings and reasoning-token accounting now survive resume and fork&lt;/li&gt;
&lt;li&gt;Neither &lt;code&gt;--resume&lt;/code&gt; nor &lt;code&gt;--network-only&lt;/code&gt; could be confirmed in the official commands documentation&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codex</category>
      <category>codexcli</category>
      <category>updates</category>
      <category>codexdoctor</category>
    </item>
    <item>
      <title>This week in Claude Code, Codex and Gemini CLI (week of November 1, 2026)</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Sat, 31 Oct 2026 19:08:39 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/this-week-in-claude-code-codex-and-gemini-cli-week-of-november-1-2026-15pn</link>
      <guid>https://dev.to/aicoding-guide/this-week-in-claude-code-codex-and-gemini-cli-week-of-november-1-2026-15pn</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/weekly-2026-11-01/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This week has a &lt;strong&gt;deadline in it&lt;/strong&gt;. Fast mode for Opus 4.8 is deprecated as of 2026-10-30 and &lt;strong&gt;removed on 2026-11-30&lt;/strong&gt;. The CHANGELOG is specific that after removal, fast mode requests on Opus 4.8 return an error and do not fall back to standard Opus 4.8.&lt;/p&gt;

&lt;p&gt;On the feature side, idle compaction spread to VS Code and the desktop app — two weeks after it arrived, terminal-only.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
This week in brief&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast mode on Opus 4.8 is removed on November 30; move to Opus 5.5 to keep the speedup&lt;/li&gt;
&lt;li&gt;Idle compaction was added to VS Code and the desktop app's Code tab&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;permissions.blockWritesOutsideWorkingDirectories&lt;/code&gt; was added&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Claude Code
&lt;/h2&gt;

&lt;p&gt;Four releases: 2.1.311, 2.1.312, 2.1.314 and 2.1.316.&lt;/p&gt;

&lt;h3&gt;
  
  
  A deprecation with a date (2.1.316)
&lt;/h3&gt;

&lt;p&gt;The CHANGELOG reads: "Deprecated fast mode for Opus 4.8 as of October 30, 2026; it will be removed on November 30, 2026. After removal, fast mode requests on Opus 4.8 return an error and do not fall back to standard Opus 4.8. Migrate to Opus 5.5 to keep the speedup."&lt;/p&gt;

&lt;p&gt;If a script or settings file assumes fast mode, move it to Opus 5.5 during November. After removal it does not quietly get slower — it errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Confining writes to the working directories (2.1.314)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;permissions.blockWritesOutsideWorkingDirectories&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Write, Edit and NotebookEdit refuse paths outside the working directories in every permission mode&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;It pairs with &lt;code&gt;permissions.blockReadsOutsideWorkingDirectories&lt;/code&gt; on the read side. With both set, the reach of the file tools no longer depends on the permission mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  Idle compaction spread (2.1.314)
&lt;/h3&gt;

&lt;p&gt;"Added idle compaction to VS Code and Claude Desktop's Code tab: a 200K+ token conversation left idle is summarized, and the summary is used on your next message if the prompt cache has expired."&lt;/p&gt;

&lt;p&gt;What landed in the terminal in 2.1.299 reached VS Code and the desktop Code tab two weeks later. For the conditions and how to turn it off, see &lt;a href="https://aicoding-guide.com/en/posts/claude-code-autocompact-window/" rel="noopener noreferrer"&gt;Making Claude Code compact earlier, or never&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  New environment variables (2.1.316)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variable&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_CODE_DISABLE_ULTRATHINK&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turns the &lt;code&gt;ultrathink&lt;/code&gt; keyword off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE_CODE_SUBAGENT_EFFORT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets the effort subagents run at when nothing else names one, instead of inheriting the session's&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Telemetry and permissions (2.1.312, 2.1.316)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;claude_code.safety_event stopped being sent after a week&lt;/strong&gt;&lt;br&gt;
The &lt;code&gt;claude_code.safety_event&lt;/code&gt; OpenTelemetry event added in v2.1.307 was withdrawn in v2.1.312: "Changed Claude Code to stop sending the &lt;code&gt;claude_code.safety_event&lt;/code&gt; OpenTelemetry event." We covered it in last week's digest; it lasted a week. A dashboard built on that event needs rebuilding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On security, &lt;code&gt;--restricted&lt;/code&gt; sessions could upload files from outside the working directories when a Read allow rule covered them; that is fixed. Separately, for Team and Enterprise logins, server-managed settings fetched from Anthropic's API now apply without an approval prompt, and a stored copy that doesn't verify is refused.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easy ones to miss
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Sessions failing turn after turn with "Invalid effort level" where an admin caps a model's effort are fixed: Claude Code lowers the effort, retries, and says which level it uses (2.1.314)&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;PreCompact&lt;/code&gt; hook with very large output could make compaction fail or repeat; &lt;strong&gt;each hook's output is now cut at 10,000 characters&lt;/strong&gt; (2.1.314)&lt;/li&gt;
&lt;li&gt;Claude could overwrite a very large &lt;code&gt;CLAUDE.md&lt;/code&gt;, rules file or @-included file after seeing only its start; Write now asks Claude to read it all or edit in place (2.1.312)&lt;/li&gt;
&lt;li&gt;Standard-context sessions that stopped with "Usage credits required for 1M context" past 200K tokens now compact and continue (2.1.311)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SubagentStop&lt;/code&gt; hooks were firing about twice a minute per running subagent instead of once at the end (2.1.311)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Codex
&lt;/h2&gt;

&lt;p&gt;v0.165.0 brought the Vertex AI provider and memories by default; see &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-165/" rel="noopener noreferrer"&gt;Codex CLI v0.165&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;v0.166.0 adds six features.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Addition&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;codex queue --resume&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Resumes unloaded threads after queueing a message&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;codex doctor --network-only&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs focused configuration, connectivity and WebSocket diagnostics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transcript selection&lt;/td&gt;
&lt;td&gt;Keyboard-driven, with word, line and page motions, search and configurable shortcuts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6.1 Terra&lt;/td&gt;
&lt;td&gt;Added to the bundled, Vertex AI and Amazon Bedrock model catalogs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safety-block explanations&lt;/td&gt;
&lt;td&gt;Clearer reasons in the TUI, with selectable safer follow-up prompts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two fixes stand out, both about resuming: acknowledged approval and permission settings are now preserved when resuming or forking threads, and reasoning-token accounting is preserved across resume and fork to avoid premature compaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini CLI
&lt;/h2&gt;

&lt;p&gt;v0.66.0 is 26 entries of fixes and chores with no features. The configuration-related ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Settings placeholders are now resolved after &lt;code&gt;.env&lt;/code&gt; files are loaded&lt;/li&gt;
&lt;li&gt;The user-level &lt;code&gt;~/.gitconfig&lt;/code&gt; is preserved in shell and git environments&lt;/li&gt;
&lt;li&gt;Interactive credential and SSH prompts are disabled in &lt;code&gt;getSafeGitEnv&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;MCP OAuth flows support opt-in private network endpoints&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;keybindings.json&lt;/code&gt; supports a &lt;code&gt;keys&lt;/code&gt; array&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A banner was also added saying Gemini CLI is not optimized for Gemini 4. For the previous release, see &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-65/" rel="noopener noreferrer"&gt;Gemini CLI v0.65 enforces read-only settings in untrusted folders&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to check now
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If you use fast mode on Opus 4.8, move to Opus 5.5 before November 30&lt;/li&gt;
&lt;li&gt;Rebuild any telemetry that relied on &lt;code&gt;claude_code.safety_event&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Note that idle compaction now runs in VS Code and the desktop app too&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;permissions.blockWritesOutsideWorkingDirectories&lt;/code&gt; if you want writes confined&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fast mode on Opus 4.8 is removed on 2026-11-30 and will error, with no fallback&lt;/li&gt;
&lt;li&gt;Idle compaction was added to VS Code and the desktop app's Code tab&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;permissions.blockWritesOutsideWorkingDirectories&lt;/code&gt; confines writes in every permission mode&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude_code.safety_event&lt;/code&gt; stopped being sent a week after it was added&lt;/li&gt;
&lt;li&gt;Codex 0.166.0 adds &lt;code&gt;codex queue --resume&lt;/code&gt; and &lt;code&gt;codex doctor --network-only&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>weeklydigest</category>
      <category>updates</category>
      <category>claudecode</category>
      <category>codex</category>
    </item>
    <item>
      <title>Codex CLI v0.165 makes Vertex AI a built-in provider and turns memories on by default</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Thu, 29 Oct 2026 19:19:07 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/codex-cli-v0165-makes-vertex-ai-a-built-in-provider-and-turns-memories-on-by-default-403k</link>
      <guid>https://dev.to/aicoding-guide/codex-cli-v0165-makes-vertex-ai-a-built-in-provider-and-turns-memories-on-by-default-403k</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-165/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Codex CLI v0.165.0 brings six features and six fixes. Two of them touch configuration: a &lt;strong&gt;built-in Vertex AI provider&lt;/strong&gt; and &lt;strong&gt;memories on by default&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For both, the release notes are ahead of the official configuration reference. Check the behaviour on your own machine before relying on either.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What this article covers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Vertex AI provider configured with &lt;code&gt;model_provider = "gcp"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Why the release notes and the configuration reference disagree about memories&lt;/li&gt;
&lt;li&gt;Changing reasoning effort partway through a conversation&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Vertex AI is now a built-in provider
&lt;/h2&gt;

&lt;p&gt;The release notes read: "Added a built-in Google Cloud Vertex AI provider, configured with &lt;code&gt;model_provider = "gcp"&lt;/code&gt;." Using Vertex AI previously meant writing your own &lt;code&gt;model_providers&lt;/code&gt; entry; now it is treated as built in.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;gcp is not in the configuration reference yet&lt;/strong&gt;&lt;br&gt;
As of 2026-10-30, the reference lists only three built-in provider IDs: "Built-in provider IDs (&lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;ollama&lt;/code&gt;, and &lt;code&gt;lmstudio&lt;/code&gt;) are reserved and cannot be overridden." There is no mention of &lt;code&gt;gcp&lt;/code&gt; or Vertex AI. The ID appears only in the release notes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Where you write the setting matters. The configuration reference states that &lt;code&gt;model_provider&lt;/code&gt; and &lt;code&gt;model_providers&lt;/code&gt; are &lt;strong&gt;ignored in a project-local &lt;code&gt;.codex/config.toml&lt;/code&gt;&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="c"&gt;# Put this in ~/.codex/config.toml; a project-local copy is ignored&lt;/span&gt;
&lt;span class="n"&gt;model_provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"gcp"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The ignored keys include &lt;code&gt;openai_base_url&lt;/code&gt;, &lt;code&gt;chatgpt_base_url&lt;/code&gt;, &lt;code&gt;model_provider&lt;/code&gt;, &lt;code&gt;model_providers&lt;/code&gt;, &lt;code&gt;notify&lt;/code&gt;, &lt;code&gt;profile&lt;/code&gt;, &lt;code&gt;profiles&lt;/code&gt; and &lt;code&gt;otel&lt;/code&gt;. Provider, notification and telemetry keys belong in user-level config. For defining a custom provider, the fields are &lt;code&gt;model_providers.&amp;lt;id&amp;gt;.name&lt;/code&gt;, &lt;code&gt;.base_url&lt;/code&gt;, &lt;code&gt;.env_key&lt;/code&gt; and others, covered in &lt;a href="https://aicoding-guide.com/en/posts/codex-config-toml/" rel="noopener noreferrer"&gt;Configuring Codex with config.toml&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;GPT-6.1 Terra was also added to the model catalogs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memories are on by default for fresh profiles
&lt;/h2&gt;

&lt;p&gt;The release notes read: "Enabled memory v2 by default for fresh profiles and added support for importing external-agent memories into it."&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The two sources disagree on the default&lt;/strong&gt;&lt;br&gt;
The configuration reference still describes &lt;code&gt;features.memories&lt;/code&gt; as "Enable Memories (off by default)" (checked 2026-10-30). The term "memory v2" does not appear in the memories documentation at all. Since the documents do not settle which applies, check the actual state with &lt;code&gt;/memories&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The mechanism itself is documented.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;~/.codex/memories/&lt;/code&gt;, holding summaries, durable entries, recent inputs and evidence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;When they are written&lt;/td&gt;
&lt;td&gt;In the background once a chat has been idle long enough, not at the end of every chat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What is skipped&lt;/td&gt;
&lt;td&gt;Active and short-lived sessions; secrets are redacted from generated memory fields&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Throttling&lt;/td&gt;
&lt;td&gt;A background pass is skipped when your rate-limit remaining percentage is below the configured threshold&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-chat control&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/memories&lt;/code&gt; chooses whether the chat can use existing memories and whether it feeds future ones&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The documentation is also explicit about the limits of relying on them: "Keep required team guidance in &lt;code&gt;AGENTS.md&lt;/code&gt; or checked-in documentation. Treat memories as a helpful recall layer, not as the only source for rules that must always apply."&lt;/p&gt;

&lt;p&gt;On the files themselves, it says "Treat these files as generated state" — fine to inspect when troubleshooting or before sharing your Codex home directory, but not a control surface to edit by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reasoning effort can change mid-conversation
&lt;/h2&gt;

&lt;p&gt;Another entry reads: "Enabled reasoning effort changes during a conversation by default for supported models." On models that support it, you can change the depth after a conversation has started.&lt;/p&gt;

&lt;p&gt;Switching through &lt;code&gt;/model&lt;/code&gt; already existed; what changed is that mid-conversation changes are enabled by default. For the values and the ways to set them, see &lt;a href="https://aicoding-guide.com/en/posts/codex-reasoning-effort/" rel="noopener noreferrer"&gt;How to change reasoning effort in Codex CLI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The session picker also gained a repository filter, and the agent command center now groups by directory, which makes sessions easier to find across linked worktrees.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security and the other fixes
&lt;/h2&gt;

&lt;p&gt;There are six fixes. The security one reads: "Closed a marketplace URL validation gap that could allow Git to connect to a different host than the one checked against allowed patterns."&lt;/p&gt;

&lt;p&gt;The remaining fixes that change behaviour:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fresh TUI sessions now honour the server's default approval reviewer when no explicit override is given&lt;/li&gt;
&lt;li&gt;TUI preferences stay editable and immediately applicable when execution settings are invalid&lt;/li&gt;
&lt;li&gt;Queued agent messages no longer restart work after an interrupt or a switch to Plan mode&lt;/li&gt;
&lt;li&gt;When a provider reports that a model was not found, Codex stops retrying and preserves the error message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the previous release, see &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-164/" rel="noopener noreferrer"&gt;Codex CLI v0.164 adds /presets and inline /permissions arguments&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A built-in Vertex AI provider is configured with &lt;code&gt;model_provider = "gcp"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gcp&lt;/code&gt; could not be confirmed in the configuration reference, which still lists only &lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;ollama&lt;/code&gt; and &lt;code&gt;lmstudio&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;model_provider&lt;/code&gt; is ignored in a project-local &lt;code&gt;.codex/config.toml&lt;/code&gt;; put it in user-level config&lt;/li&gt;
&lt;li&gt;Memories are said to be on by default for fresh profiles, while the reference still says off by default&lt;/li&gt;
&lt;li&gt;A marketplace URL validation gap that could redirect Git to another host was closed&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codex</category>
      <category>codexcli</category>
      <category>updates</category>
      <category>vertexai</category>
    </item>
    <item>
      <title>Claude Code vs Cursor compared on pricing, permission settings and rule files</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Tue, 27 Oct 2026 19:19:33 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/claude-code-vs-cursor-compared-on-pricing-permission-settings-and-rule-files-50eo</link>
      <guid>https://dev.to/aicoding-guide/claude-code-vs-cursor-compared-on-pricing-permission-settings-and-rule-files-50eo</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/claude-code-vs-cursor/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Claude Code and Cursor are both coding agents. Cursor is known as an editor, but it now ships a CLI too, so using it from a terminal looks much like using Claude Code.&lt;/p&gt;

&lt;p&gt;What changed in 2026 is &lt;strong&gt;what your subscription includes&lt;/strong&gt;. Cursor is sold as part of the X Subscription, and what comes with it is Grok and Composer. Using Claude's models costs extra. That is the single biggest factor in choosing between them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What this article covers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The models each subscription actually includes&lt;/li&gt;
&lt;li&gt;Similar permission syntax, but different places you can put settings&lt;/li&gt;
&lt;li&gt;How the project rule files differ&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  At a glance
&lt;/h2&gt;

&lt;p&gt;Verified against the official documentation as of 2026-10-28.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;Cursor&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Surfaces&lt;/td&gt;
&lt;td&gt;CLI, VS Code extension, desktop app&lt;/td&gt;
&lt;td&gt;Editor, CLI, cloud agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Models included&lt;/td&gt;
&lt;td&gt;Claude models&lt;/td&gt;
&lt;td&gt;Cursor models (Grok 4.7 / 4.6 / 4.5, Composer 2.5)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Third-party models&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;Not included; Premium and above pay API list price from prepaid credit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usage unit&lt;/td&gt;
&lt;td&gt;Rolling five-hour session window&lt;/td&gt;
&lt;td&gt;A pool that refreshes weekly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permission syntax&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Bash(...)&lt;/code&gt;, &lt;code&gt;Read(...)&lt;/code&gt;, &lt;code&gt;Edit(...)&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Shell(...)&lt;/code&gt;, &lt;code&gt;Read(...)&lt;/code&gt;, &lt;code&gt;Write(...)&lt;/code&gt;, &lt;code&gt;WebFetch(...)&lt;/code&gt;, &lt;code&gt;Mcp(...)&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Config file&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;settings.json&lt;/code&gt;, five scopes&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;cli-config.json&lt;/code&gt; (global) and &lt;code&gt;cli.json&lt;/code&gt; (project)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rule file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Four kinds, including &lt;code&gt;.mdc&lt;/code&gt; files in &lt;code&gt;.cursor/rules&lt;/code&gt; and &lt;code&gt;AGENTS.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The subscriptions include different models
&lt;/h2&gt;

&lt;p&gt;The documentation opens with it: "Cursor is sold as part of The X Subscription, one subscription for Grok, Cursor, and X." Paid plans come with a weekly pool of usage for Cursor's models, and &lt;strong&gt;third-party models are not included&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cursor plan&lt;/th&gt;
&lt;th&gt;Monthly&lt;/th&gt;
&lt;th&gt;Annual&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plus&lt;/td&gt;
&lt;td&gt;$8&lt;/td&gt;
&lt;td&gt;$80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Premium&lt;/td&gt;
&lt;td&gt;$30&lt;/td&gt;
&lt;td&gt;$300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Super&lt;/td&gt;
&lt;td&gt;$100&lt;/td&gt;
&lt;td&gt;$1,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ultra&lt;/td&gt;
&lt;td&gt;$200&lt;/td&gt;
&lt;td&gt;$2,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Teams is $30, $100 or $200 per seat, and Enterprise is custom. Prices exclude tax.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plus is the tier to read carefully.&lt;/strong&gt; The documentation says it runs Cursor's own models at fixed settings: Fast off, effort medium, and Grok 4.7 on the 256k context window. No Auto, Cloud Agents, Automations, Bugbot, Origin, third-party models, or your own API keys.&lt;/p&gt;

&lt;p&gt;On the Claude side, Free is $0, Pro is $20 billed monthly or $17/mo billed annually ($200 up front), and Max starts at $100 for 5x or 20x Pro's usage. &lt;strong&gt;Claude Code is included in Pro and Max, and is not available on Free.&lt;/strong&gt; Limits "reset on a rolling five-hour session window".&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The same money buys different things&lt;/strong&gt;&lt;br&gt;
At $8 against $20, Cursor Plus looks like the cheaper option. But Plus runs Grok and Composer, not Claude. Running Claude's models through Cursor needs Premium or above &lt;em&gt;plus&lt;/em&gt; prepaid credit, which reverses the comparison. The reliable question is not which is cheaper but which subscription contains the model you want to use.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The documentation also calls Pro, Pro+, Ultra, Start, and Teams Standard and Premium "legacy Cursor plans". Note that Ultra appears in both the current and the legacy lists, so the names overlap.&lt;/p&gt;

&lt;h2&gt;
  
  
  The permission syntax is similar
&lt;/h2&gt;

&lt;p&gt;Cursor CLI's permission tokens look a lot like Claude Code's. You list them under &lt;code&gt;permissions.allow&lt;/code&gt; and &lt;code&gt;permissions.deny&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"permissions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"allow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Shell(git)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Read(src/**/*.ts)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Write(package.json)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"WebFetch(docs.github.com)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Mcp(datadog:*)"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"deny"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Shell(rm)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Read(.env*)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Write(**/*.key)"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shell is &lt;code&gt;Shell&lt;/code&gt; rather than &lt;code&gt;Bash&lt;/code&gt;, and edits are &lt;code&gt;Write&lt;/code&gt; rather than &lt;code&gt;Edit&lt;/code&gt;. For MCP, Claude Code writes &lt;code&gt;mcp__&amp;lt;server&amp;gt;__&amp;lt;tool&amp;gt;&lt;/code&gt; while Cursor writes &lt;code&gt;Mcp(server:tool)&lt;/code&gt;. Keeping &lt;code&gt;.env&lt;/code&gt; out of reach works the same way in both. For the Claude Code syntax, see &lt;a href="https://aicoding-guide.com/en/posts/claude-code-settings-json-permissions/" rel="noopener noreferrer"&gt;Claude Code permissions in settings.json&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The real difference is &lt;strong&gt;where settings can live&lt;/strong&gt;. Cursor CLI reads &lt;code&gt;~/.cursor/cli-config.json&lt;/code&gt; globally and &lt;code&gt;&amp;lt;project&amp;gt;/.cursor/cli.json&lt;/code&gt; per project, but the documentation states: "Only permissions can be configured at the project level. All other CLI settings must be set globally."&lt;/p&gt;

&lt;p&gt;So in Cursor, permissions are the only thing a project can vary. That is a different design from Claude Code, where five scopes from managed settings down to user settings can override nearly any key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule file conventions
&lt;/h2&gt;

&lt;p&gt;Cursor has four kinds of rules.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;Where it lives&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Project Rules&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;.mdc&lt;/code&gt; files in &lt;code&gt;.cursor/rules&lt;/code&gt;, version-controlled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User Rules&lt;/td&gt;
&lt;td&gt;Global to your Cursor environment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team Rules&lt;/td&gt;
&lt;td&gt;Managed from the dashboard, on Team and Enterprise plans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AGENTS.md&lt;/td&gt;
&lt;td&gt;Markdown instructions, a simpler alternative to &lt;code&gt;.cursor/rules&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The extension is the trap in Project Rules. The documentation says "A plain &lt;code&gt;.md&lt;/code&gt; file in &lt;code&gt;.cursor/rules&lt;/code&gt; is ignored by the rules system because it has no frontmatter to specify &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;globs&lt;/code&gt;, and &lt;code&gt;alwaysApply&lt;/code&gt;." Use &lt;code&gt;.mdc&lt;/code&gt;, or use &lt;code&gt;AGENTS.md&lt;/code&gt; instead.&lt;/p&gt;

&lt;p&gt;Claude Code uses &lt;code&gt;CLAUDE.md&lt;/code&gt;. Because Cursor reads &lt;code&gt;AGENTS.md&lt;/code&gt;, the tidiest arrangement for using both is to keep the shared content in &lt;code&gt;AGENTS.md&lt;/code&gt; and reference it from &lt;code&gt;CLAUDE.md&lt;/code&gt;. Codex reads &lt;code&gt;AGENTS.md&lt;/code&gt; too, which makes this pay off across all three.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing between them
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;The better fit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;You mainly want Claude's models&lt;/td&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You want completions while writing in the editor&lt;/td&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You want settings to vary per project&lt;/td&gt;
&lt;td&gt;Claude Code, where more than permissions is per-project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You are happy on Grok and Composer and want a cheap start&lt;/td&gt;
&lt;td&gt;Cursor Plus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You are wiring it into CI&lt;/td&gt;
&lt;td&gt;Either; both have a CLI, so follow your existing subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Model quality is left out deliberately, since it changes with each release. For the same comparison against other tools, see &lt;a href="https://aicoding-guide.com/en/posts/codex-vs-claude-code/" rel="noopener noreferrer"&gt;Codex vs Claude Code&lt;/a&gt; and &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-vs-claude-code/" rel="noopener noreferrer"&gt;Gemini CLI vs Claude Code&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cursor is sold inside the X Subscription and includes Grok 4.7 / 4.6 / 4.5 and Composer 2.5&lt;/li&gt;
&lt;li&gt;Third-party models are not included; Premium and above pay API list price from prepaid credit, and Plus cannot use them&lt;/li&gt;
&lt;li&gt;Claude Code comes with Pro ($20/mo) and Max (from $100), and is not on Free&lt;/li&gt;
&lt;li&gt;The permission syntax is close, but Cursor can only vary permissions per project&lt;/li&gt;
&lt;li&gt;A plain &lt;code&gt;.md&lt;/code&gt; in &lt;code&gt;.cursor/rules&lt;/code&gt; is ignored; use &lt;code&gt;.mdc&lt;/code&gt; or &lt;code&gt;AGENTS.md&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>claudecode</category>
      <category>cursor</category>
      <category>comparison</category>
      <category>pricing</category>
    </item>
    <item>
      <title>Codex CLI v0.164 adds /presets and inline /permissions arguments for permission profiles</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Sun, 25 Oct 2026 19:17:04 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/codex-cli-v0164-adds-presets-and-inline-permissions-arguments-for-permission-profiles-4deb</link>
      <guid>https://dev.to/aicoding-guide/codex-cli-v0164-adds-presets-and-inline-permissions-arguments-for-permission-profiles-4deb</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-164/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Codex CLI v0.164.0 is the first release in a while with several genuine features. The two that matter are &lt;strong&gt;&lt;code&gt;/presets&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;inline &lt;code&gt;/permissions&lt;/code&gt; arguments&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The second is more than a typing shortcut. Behind it sits &lt;strong&gt;permission profiles&lt;/strong&gt;, a beta mechanism that does not combine with the older &lt;code&gt;sandbox_mode&lt;/code&gt; settings. Configure both without knowing that, and one of them is silently ignored.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What this article covers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the ten &lt;code&gt;/presets&lt;/code&gt; slots hold&lt;/li&gt;
&lt;li&gt;How the permission profiles that &lt;code&gt;/permissions&lt;/code&gt; selects are built&lt;/li&gt;
&lt;li&gt;Why permission profiles and &lt;code&gt;sandbox_mode&lt;/code&gt; cannot be used together&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Ten preset slots for prompts
&lt;/h2&gt;

&lt;p&gt;The release notes read: "Save reusable prompts and slash commands in ten numbered &lt;code&gt;/presets&lt;/code&gt; slots, with a keyboard menu for quick access."&lt;/p&gt;

&lt;p&gt;Reusable prompts and slash commands go into ten numbered slots, recalled from a keyboard menu. It gives the standing instructions you retype every session somewhere to live.&lt;/p&gt;

&lt;p&gt;The other input-side addition is arguments for &lt;code&gt;/model&lt;/code&gt; and &lt;code&gt;/permissions&lt;/code&gt;: "Set model, reasoning effort, speed, and permission profiles directly with inline &lt;code&gt;/model&lt;/code&gt; and &lt;code&gt;/permissions&lt;/code&gt; arguments." Instead of opening a menu and choosing, you pass the value on the command.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;/presets and /permissions are not in the official list&lt;/strong&gt;&lt;br&gt;
As of 2026-10-26, the official slash command list (28 entries) has no row for &lt;code&gt;/presets&lt;/code&gt; or &lt;code&gt;/permissions&lt;/code&gt;. That page does say "Available commands vary based on your environment and access", so availability may vary, but neither could be confirmed in the documentation. Nor is there any statement of where the preset slots are stored.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The permission profiles behind /permissions
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;permission profiles&lt;/strong&gt; that &lt;code&gt;/permissions&lt;/code&gt; selects are a beta feature with their own documentation page: "A profile is a named policy that combines filesystem rules, which define what commands can read or write, with network rules, which define which destinations commands can reach."&lt;/p&gt;

&lt;p&gt;Three profiles are built in.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Profile&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:read-only&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Keeps local command execution read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:workspace&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Allows writes inside the active workspace roots and system temp directories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:danger-full-access&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes local sandbox restrictions; only when that breadth is intended&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Define your own under &lt;code&gt;[permissions.&amp;lt;name&amp;gt;]&lt;/code&gt; and select it with the top-level &lt;code&gt;default_permissions&lt;/code&gt; key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="n"&gt;default_permissions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"project-edit"&lt;/span&gt;

&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="n"&gt;features&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;network_proxy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project-edit&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;workspace_roots&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
&lt;span class="s"&gt;"~/code/app"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="s"&gt;"~/code/shared-lib"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project-edit&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filesystem&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
&lt;span class="s"&gt;":minimal"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"read"&lt;/span&gt;

&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project-edit&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filesystem&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="s"&gt;":workspace_roots"&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
&lt;span class="s"&gt;"."&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"write"&lt;/span&gt;
&lt;span class="s"&gt;".devcontainer"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"read"&lt;/span&gt;
&lt;span class="s"&gt;"**/*.env"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"deny"&lt;/span&gt;

&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project-edit&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project-edit&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="k"&gt;.&lt;/span&gt;&lt;span class="n"&gt;domains&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
&lt;span class="s"&gt;"api.openai.com"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"allow"&lt;/span&gt;
&lt;span class="s"&gt;"*.github.com"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"allow"&lt;/span&gt;
&lt;span class="s"&gt;"tracking.example.com"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"deny"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;**/*.env&lt;/code&gt; deny line is the practically useful part: writes stay allowed inside the workspace while environment files are carved out.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;network.enabled = true alone does not enforce domain rules&lt;/strong&gt;&lt;br&gt;
The documentation states: "A profile's &lt;code&gt;network.enabled = true&lt;/code&gt; permits command network access, but it does not start the network proxy." To have the domain rules enforced, also set &lt;code&gt;features.network_proxy = true&lt;/code&gt; in &lt;code&gt;config.toml&lt;/code&gt;. Without an active proxy, those domain rules do not restrict direct network access.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Permission profiles and sandbox_mode do not mix
&lt;/h2&gt;

&lt;p&gt;This is the part that catches people migrating. The documentation is explicit: "Permission profiles do not compose with the older sandbox settings. Configure either &lt;code&gt;default_permissions&lt;/code&gt; and &lt;code&gt;[permissions]&lt;/code&gt;, or &lt;code&gt;sandbox_mode&lt;/code&gt; / &lt;code&gt;sandbox_workspace_write&lt;/code&gt;, but not both."&lt;/p&gt;

&lt;p&gt;The resolution falls entirely to one side. If &lt;code&gt;sandbox_mode&lt;/code&gt; appears &lt;strong&gt;anywhere in a loaded config file&lt;/strong&gt;, if you pass &lt;code&gt;--sandbox&lt;/code&gt;, or if the selected config profile sets &lt;code&gt;sandbox_mode&lt;/code&gt;, Codex uses the older sandbox settings rather than &lt;code&gt;default_permissions&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So a &lt;code&gt;sandbox_mode&lt;/code&gt; line left over in &lt;code&gt;~/.codex/config.toml&lt;/code&gt; silently voids a permission profile you just wrote. Remove the old settings first. For the older model, see &lt;a href="https://aicoding-guide.com/en/posts/codex-approval-sandbox/" rel="noopener noreferrer"&gt;Combining approval_policy and sandbox_mode in Codex&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credential masking and the other fixes
&lt;/h2&gt;

&lt;p&gt;Two security changes landed. One is "Mask credentials during supported remote Bash commands and Zsh snapshot sessions", which covers custom provider credentials too. The other is "Hardened sandbox checks for case-variant metadata paths on macOS and replaceable symlinks used to locate executables."&lt;/p&gt;

&lt;p&gt;Three fixes stand out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A failed compaction no longer leaves partial summaries in conversation history&lt;/li&gt;
&lt;li&gt;Resuming a session now finds compressed histories and restores saved thread settings&lt;/li&gt;
&lt;li&gt;Windows HTTPS and WebSocket connections handle proxy authentication challenges with the signed-in user's credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Beyond those, enterprise MCP connections can authenticate through Codex account grants or a dedicated sign-in, and the Amazon Bedrock setup wizard is now on by default. For the previous release, see &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-163/" rel="noopener noreferrer"&gt;Codex CLI v0.163 turns Daybreak back on by default&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/presets&lt;/code&gt; stores reusable prompts and slash commands in ten numbered slots&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/model&lt;/code&gt; and &lt;code&gt;/permissions&lt;/code&gt; now accept their settings as inline arguments&lt;/li&gt;
&lt;li&gt;The permission profiles &lt;code&gt;/permissions&lt;/code&gt; selects are beta; the built-ins are &lt;code&gt;:read-only&lt;/code&gt;, &lt;code&gt;:workspace&lt;/code&gt; and &lt;code&gt;:danger-full-access&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Permission profiles do not combine with &lt;code&gt;sandbox_mode&lt;/code&gt;; a leftover &lt;code&gt;sandbox_mode&lt;/code&gt; wins&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/presets&lt;/code&gt; and &lt;code&gt;/permissions&lt;/code&gt; could not be confirmed in the official slash command list&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codex</category>
      <category>codexcli</category>
      <category>updates</category>
      <category>permissionprofiles</category>
    </item>
    <item>
      <title>This week in Claude Code, Codex and Gemini CLI (week of October 25, 2026)</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Sat, 24 Oct 2026 19:08:18 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/this-week-in-claude-code-codex-and-gemini-cli-week-of-october-25-2026-1jjf</link>
      <guid>https://dev.to/aicoding-guide/this-week-in-claude-code-codex-and-gemini-cli-week-of-october-25-2026-1jjf</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/weekly-2026-10-25/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This was a &lt;strong&gt;security fix week&lt;/strong&gt;. Claude Code 2.1.309 carries more than ten fixes for routes around the sandbox and the permission checks. Codex 0.164.0 hardened its own sandbox checks and added credential masking.&lt;/p&gt;

&lt;p&gt;Codex also shipped features. &lt;code&gt;/presets&lt;/code&gt; stores prompts and slash commands in ten slots, and &lt;code&gt;/model&lt;/code&gt; and &lt;code&gt;/permissions&lt;/code&gt; now take their settings as arguments.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
This week in brief&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code 2.1.309 concentrates fixes for sandbox and permission-check bypasses&lt;/li&gt;
&lt;li&gt;Codex 0.164.0 adds &lt;code&gt;/presets&lt;/code&gt; and masks credentials in remote Bash&lt;/li&gt;
&lt;li&gt;Claude Code gained the &lt;code&gt;claude_code.safety_event&lt;/code&gt; OpenTelemetry event&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Claude Code
&lt;/h2&gt;

&lt;p&gt;Eight releases this week, 2.1.303 through 2.1.310.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sandbox and permission bypasses (2.1.309)
&lt;/h3&gt;

&lt;p&gt;This release is lopsided: it is largely a list of routes that worked when they should not have.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Route&lt;/th&gt;
&lt;th&gt;What was wrong&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shell startup files&lt;/td&gt;
&lt;td&gt;On macOS and Linux, every sandboxed Bash command ran the shell's startup files &lt;strong&gt;outside&lt;/strong&gt; the sandbox first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Symbolic links&lt;/td&gt;
&lt;td&gt;macOS &lt;code&gt;denyWrite&lt;/code&gt; glob patterns did not apply at a path's real location when the pattern's folder was reached through a symlink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP config file&lt;/td&gt;
&lt;td&gt;Sandboxed commands and auto-accepted edits could modify the config passed with &lt;code&gt;--mcp-config&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redirects&lt;/td&gt;
&lt;td&gt;The Bash permission check trusted a variable set by a command whose redirect can fail to open&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compound commands&lt;/td&gt;
&lt;td&gt;A &lt;code&gt;cd&lt;/code&gt; that was wrapped or prefixed before a git command did not prompt, as a plain &lt;code&gt;cd&lt;/code&gt; does&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deny rules&lt;/td&gt;
&lt;td&gt;An &lt;code&gt;Edit(path)&lt;/code&gt; deny rule did not block a Bash redirect to that path in some commands holding a subshell&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worktree isolation&lt;/td&gt;
&lt;td&gt;Locale-prefixed commands, and some zsh arithmetic commands, passed the isolation guard&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On Windows, PowerShell permission checks were auto-approving some &lt;code&gt;Set-Location&lt;/code&gt; and &lt;code&gt;cd&lt;/code&gt; commands that carry extra arguments. 2.1.310 adds another: with Git Bash missing, &lt;code&gt;PreToolUse&lt;/code&gt; and &lt;code&gt;PermissionRequest&lt;/code&gt; hooks let a tool call through when the hook's command was only quoted strings.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Upgrade if you depend on deny rules or the sandbox&lt;/strong&gt;&lt;br&gt;
These are "configured but not actually enforced" fixes. If your setup assumes &lt;code&gt;.env&lt;/code&gt; cannot be read or writes are confined, move to 2.1.310 and then review the rules themselves. &lt;a href="https://aicoding-guide.com/en/posts/claude-code-settings-json-permissions/" rel="noopener noreferrer"&gt;Claude Code permissions in settings.json&lt;/a&gt; covers the syntax.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Telemetry and settings (2.1.305, 2.1.307)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;claude_code.safety_event&lt;/code&gt;&lt;/strong&gt;: a new OpenTelemetry event for each tool call that a permission rule, auto mode, a safety check, a hook or the sandbox stopped, prompted on, or sent back&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;sandbox.allowNestedUserNamespaces&lt;/code&gt;&lt;/strong&gt;: lets sandboxed commands on Linux create user namespaces, for Chromium and rootless podman. The CHANGELOG also states plainly that this lets them get around the sandbox's file protections&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS&lt;/code&gt;&lt;/strong&gt;: unattended retry mode now notices a usage limit lifted before its reset&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Easy ones to miss (2.1.304, 2.1.310)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;CLAUDE_CODE_AUTO_COMPACT_WINDOW=200k&lt;/code&gt; silently set a 100K window. The variable now accepts &lt;code&gt;k&lt;/code&gt; and &lt;code&gt;M&lt;/code&gt; suffixes and warns when a value is out of range&lt;/li&gt;
&lt;li&gt;A very large &lt;code&gt;cleanupPeriodDays&lt;/code&gt; made background cleanup delete some recent files, such as pasted images&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude --worktree&lt;/code&gt; removed the worktree and its branch without asking at exit when HEAD was detached or on another branch, which could lose commits&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Codex
&lt;/h2&gt;

&lt;p&gt;v0.164.0 is a feature release.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Addition&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/presets&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Saves reusable prompts and slash commands in ten numbered slots, recalled from a keyboard menu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/model&lt;/code&gt; and &lt;code&gt;/permissions&lt;/code&gt; arguments&lt;/td&gt;
&lt;td&gt;Set model, reasoning effort, speed and permissions inline as arguments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image preview&lt;/td&gt;
&lt;td&gt;Shows viewed and generated images in the fullscreen transcript on Kitty or Sixel terminals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise MCP auth&lt;/td&gt;
&lt;td&gt;Authenticates through Codex account grants or a dedicated sign-in, including OAuth clients that need secrets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Credential masking&lt;/td&gt;
&lt;td&gt;Masks credentials in remote Bash commands and zsh snapshot sessions, custom provider credentials included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bedrock setup&lt;/td&gt;
&lt;td&gt;The Amazon Bedrock setup wizard is now on by default&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On the security side, sandbox checks were hardened for case-variant metadata paths on macOS and for replaceable symlinks used to find executables — the same direction as Claude Code's symlink fixes this week.&lt;/p&gt;

&lt;p&gt;Among the fixes, two stand out: a failed compaction no longer leaves a partial summary in history, and Windows HTTPS and WebSocket connections now handle proxy authentication with the signed-in user's Negotiate or NTLM credentials. For the previous release, see &lt;a href="https://aicoding-guide.com/en/posts/codex-update-0-163/" rel="noopener noreferrer"&gt;Codex CLI v0.163 turns Daybreak back on by default&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini CLI
&lt;/h2&gt;

&lt;p&gt;v0.65.0 (October 20) had one feature among 27 entries, the &lt;code&gt;otlpHeaders&lt;/code&gt; telemetry setting. The change that matters more in practice is that workspace settings in an untrusted folder are now enforced as read-only. See &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-65/" rel="noopener noreferrer"&gt;Gemini CLI v0.65 enforces read-only settings in untrusted folders&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to check now
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Move Claude Code to 2.1.310, first if you rely on the sandbox or on deny rules&lt;/li&gt;
&lt;li&gt;Check whether &lt;code&gt;cleanupPeriodDays&lt;/code&gt; is set to an extreme value&lt;/li&gt;
&lt;li&gt;If you wrote a suffixed value such as &lt;code&gt;200k&lt;/code&gt; for &lt;code&gt;CLAUDE_CODE_AUTO_COMPACT_WINDOW&lt;/code&gt;, confirm it is the window you meant&lt;/li&gt;
&lt;li&gt;Upgrade Codex to 0.164.0 if you use its sandbox&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code 2.1.309 fixes more than ten ways around the sandbox and the permission checks&lt;/li&gt;
&lt;li&gt;Sandboxed commands were running the shell's startup files outside the sandbox first&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude_code.safety_event&lt;/code&gt; makes blocked and prompted tool calls measurable&lt;/li&gt;
&lt;li&gt;Codex 0.164.0 adds &lt;code&gt;/presets&lt;/code&gt;, inline &lt;code&gt;/model&lt;/code&gt; and &lt;code&gt;/permissions&lt;/code&gt; arguments, and credential masking&lt;/li&gt;
&lt;li&gt;Gemini CLI v0.65.0 enforces untrusted folder settings and adds &lt;code&gt;otlpHeaders&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>weeklydigest</category>
      <category>updates</category>
      <category>claudecode</category>
      <category>codex</category>
    </item>
    <item>
      <title>Gemini CLI v0.65 enforces read-only settings in untrusted folders and adds OTLP headers</title>
      <dc:creator>aicoding-guide</dc:creator>
      <pubDate>Thu, 22 Oct 2026 19:17:52 +0000</pubDate>
      <link>https://dev.to/aicoding-guide/gemini-cli-v065-enforces-read-only-settings-in-untrusted-folders-and-adds-otlp-headers-50p2</link>
      <guid>https://dev.to/aicoding-guide/gemini-cli-v065-enforces-read-only-settings-in-untrusted-folders-and-adds-otlp-headers-50p2</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-65/" rel="noopener noreferrer"&gt;https://aicoding-guide.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Gemini CLI v0.65.0 carries 27 changes, but &lt;strong&gt;only one is a feature&lt;/strong&gt;: the telemetry OTLP exporter now accepts custom headers. The rest is 25 fixes and one performance change.&lt;/p&gt;

&lt;p&gt;As in the previous release, &lt;strong&gt;untrusted folder handling&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;@&lt;/code&gt; references&lt;/strong&gt; both got attention. Those are the same two areas v0.64.0 touched, so this is the second release in a row working on them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;&lt;br&gt;
What this article covers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workspace settings in an untrusted folder are now enforced as read-only&lt;/li&gt;
&lt;li&gt;How to write &lt;code&gt;otlpHeaders&lt;/code&gt;, the release's only new feature&lt;/li&gt;
&lt;li&gt;Fixes around session resume, OAuth and &lt;code&gt;@&lt;/code&gt; references&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Untrusted folder settings are enforced as read-only
&lt;/h2&gt;

&lt;p&gt;PR #29583 makes workspace settings read-only in a folder you have not trusted.&lt;/p&gt;

&lt;p&gt;Folder trust exists to stop an unvetted project from loading its own configuration. Per the documentation, an untrusted folder does not load &lt;code&gt;.gemini/settings.json&lt;/code&gt; or &lt;code&gt;.env&lt;/code&gt;, cannot install or update extensions, disables tool auto-acceptance, and does not connect to MCP servers.&lt;/p&gt;

&lt;p&gt;v0.64.0 fixed headless mode treating an untrusted folder as trusted. This release continues that work by closing the write side. If your CI depends on the feature, v0.65.0 is the version that has both. For the previous release, see &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-update-0-64/" rel="noopener noreferrer"&gt;Gemini CLI v0.64 fixes the CPU hang on @ inside code&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Relatedly, PR #29672 removes false positives from the untrusted command flag and compound loop checks — the case where the check erred so far toward caution that ordinary commands were caught by it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The only new feature is custom OTLP headers
&lt;/h2&gt;

&lt;p&gt;PR #29641 adds &lt;code&gt;otlpHeaders&lt;/code&gt; to the telemetry settings, so you can attach arbitrary headers to OTLP exporter requests. That is what you need when the collector you send to requires an authentication header.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"telemetry"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"local"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"otlpEndpoint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:4317"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"otlpProtocol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"grpc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"otlpHeaders"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"x-api-key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-key"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The documentation's settings table defines it as:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Environment variable&lt;/th&gt;
&lt;th&gt;Values&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;otlpHeaders&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GEMINI_TELEMETRY_OTLP_HEADERS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;JSON or &lt;code&gt;key=value&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Because the environment variable works too, a CI job can pass the key from its own secret store instead of a settings file.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A key written into the header stays in the settings file&lt;/strong&gt;&lt;br&gt;
Putting an API key directly in &lt;code&gt;otlpHeaders&lt;/code&gt; leaves it in &lt;code&gt;.gemini/settings.json&lt;/code&gt;. If you commit that file, pass the value through &lt;code&gt;GEMINI_TELEMETRY_OTLP_HEADERS&lt;/code&gt; instead.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Session resume and authentication fixes
&lt;/h2&gt;

&lt;p&gt;Six fixes address losing work or failing to sign in.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;PR&lt;/th&gt;
&lt;th&gt;What it fixes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#29584&lt;/td&gt;
&lt;td&gt;A resumed session's history being deleted on a quick exit (Issue #29198)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;#29618&lt;/td&gt;
&lt;td&gt;Duplicate tool response turns when resuming a session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;#29728&lt;/td&gt;
&lt;td&gt;Session poisoning on a rapid Ctrl-C interruption&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;#29655&lt;/td&gt;
&lt;td&gt;Infinite verification and OAuth retry loops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;#29643&lt;/td&gt;
&lt;td&gt;Cached credentials now cleared when Google login is re-selected&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;#29616&lt;/td&gt;
&lt;td&gt;OAuth callback &lt;code&gt;iss&lt;/code&gt; validation aligned with RFC 9207 metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;#29584&lt;/code&gt; and &lt;code&gt;#29728&lt;/code&gt; are the kind of bug that costs you work. If you routinely resume long sessions, they are the reason to upgrade.&lt;/p&gt;

&lt;h2&gt;
  
  
  @ references and ignore-file performance
&lt;/h2&gt;

&lt;p&gt;PR #29617 stops the eager recursive file reading that &lt;code&gt;@&lt;/code&gt; references triggered, so pointing at a directory with &lt;code&gt;@src/&lt;/code&gt; no longer pulls in its contents unconditionally.&lt;/p&gt;

&lt;p&gt;v0.64.0 fixed the CPU hang on code containing &lt;code&gt;@&lt;/code&gt;, so &lt;code&gt;@&lt;/code&gt; handling has now been worked on in two consecutive releases.&lt;/p&gt;

&lt;p&gt;On performance, PR #29582 optimises ignore filtering and enables subtree pruning (Issue #29077), which helps when file discovery is slow in a large repository.&lt;/p&gt;

&lt;p&gt;Also fixed: the Enter key hanging in interactive mode (PR #29476, Issue #23297), one extension failing the allowlist check preventing the others from loading (PR #29720), and unnecessary terminal clears when expanding with &lt;code&gt;Ctrl+O&lt;/code&gt; (PR #29640). For MCP configuration, see &lt;a href="https://aicoding-guide.com/en/posts/gemini-cli-mcp/" rel="noopener noreferrer"&gt;Setting up MCP servers in Gemini CLI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Of 27 entries in v0.65.0, one is a feature, one is performance, and 25 are fixes and release work&lt;/li&gt;
&lt;li&gt;Workspace settings in an untrusted folder are now enforced as read-only&lt;/li&gt;
&lt;li&gt;The feature is &lt;code&gt;telemetry.otlpHeaders&lt;/code&gt;, also settable via &lt;code&gt;GEMINI_TELEMETRY_OTLP_HEADERS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Resumed session history loss and session poisoning on rapid Ctrl-C are fixed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@&lt;/code&gt; references no longer read recursively ahead of time, continuing v0.64's &lt;code&gt;@&lt;/code&gt; work&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gemini</category>
      <category>updates</category>
      <category>foldertrust</category>
      <category>opentelemetry</category>
    </item>
  </channel>
</rss>
