<?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: Yan Gao</title>
    <description>The latest articles on DEV Community by Yan Gao (@yan_gao_3ad90a90b26925538).</description>
    <link>https://dev.to/yan_gao_3ad90a90b26925538</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%2F4066892%2F0e201c12-e1ce-4a7d-a0a8-5b09b8d98a83.png</url>
      <title>DEV Community: Yan Gao</title>
      <link>https://dev.to/yan_gao_3ad90a90b26925538</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yan_gao_3ad90a90b26925538"/>
    <language>en</language>
    <item>
      <title>Codex Full Access Is the Wrong First Question</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Mon, 21 Sep 2026 06:08:45 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/codex-full-access-is-the-wrong-first-question-9c6</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/codex-full-access-is-the-wrong-first-question-9c6</guid>
      <description>&lt;p&gt;These commands do not grant the same authority:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-C&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\absolute\project&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--sandbox&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;workspace-write&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--ask-for-approval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;never&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--dangerously-bypass-approvals&lt;/span&gt;&lt;span class="o"&gt;-and&lt;/span&gt;&lt;span class="nt"&gt;-sandbox&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first removes approval prompts while keeping a workspace boundary. The second removes both the approval and sandbox controls. The current &lt;code&gt;codex-cli 0.155.1&lt;/code&gt; help exposes them separately for a reason.&lt;/p&gt;

&lt;p&gt;Do not copy either command until the failed boundary is known. When someone asks how to give Codex “full access,” the phrase usually hides a smaller problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;approval prompts interrupt a non-interactive run;&lt;/li&gt;
&lt;li&gt;one required folder sits outside the workspace;&lt;/li&gt;
&lt;li&gt;a package manager cannot reach the network;&lt;/li&gt;
&lt;li&gt;a domain allowlist is not being enforced;&lt;/li&gt;
&lt;li&gt;or an external tool wants authority that the shell sandbox does not describe.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Treating all five as the same problem produces a broad permission change that may not even repair the failing gate.&lt;/p&gt;

&lt;p&gt;The better first question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which boundary stopped the task, and what is the smallest change that proves it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Three controls that are easy to confuse
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Approval routing
&lt;/h3&gt;

&lt;p&gt;Approval policy determines whether Codex can pause and ask before an action. It does not, by itself, decide which files or network destinations the command can reach.&lt;/p&gt;

&lt;p&gt;OpenAI's current documentation states that &lt;code&gt;--ask-for-approval never&lt;/code&gt; works with every sandbox mode. A read-only run with no prompts is still read-only. A workspace-write run with no prompts is still bounded to its configured workspace and network policy.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The command execution boundary
&lt;/h3&gt;

&lt;p&gt;The sandbox or permission profile controls the technical reach of generated commands. That includes filesystem access and, depending on the configuration family, command network access.&lt;/p&gt;

&lt;p&gt;This is why &lt;code&gt;workspace-write&lt;/code&gt; and &lt;code&gt;danger-full-access&lt;/code&gt; are not different prompt settings. They are different execution boundaries.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. External tool authority
&lt;/h3&gt;

&lt;p&gt;Apps, MCP tools, hooks, browser actions, and other integrations may have their own approval and authorization paths. A shell flag is not a universal permission switch for every connected tool.&lt;/p&gt;

&lt;p&gt;Removing shell prompts does not automatically authorize a side-effecting app action. Approving one external action does not necessarily widen filesystem access for later commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Translate the symptom before choosing a flag
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What the operator actually needs&lt;/th&gt;
&lt;th&gt;Narrow first move&lt;/th&gt;
&lt;th&gt;What not to assume&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Run inside one repository without interactive prompts&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--sandbox workspace-write --ask-for-approval never&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No prompts does not mean machine-wide write access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write to one known folder outside the project&lt;/td&gt;
&lt;td&gt;Add that exact path with &lt;code&gt;--add-dir&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Do not open the parent drive or user profile.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Let a command reach the internet&lt;/td&gt;
&lt;td&gt;Enable command networking in the selected configuration model&lt;/td&gt;
&lt;td&gt;Web search availability does not prove subprocess network access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enforce a domain allowlist&lt;/td&gt;
&lt;td&gt;Enable both profile networking and the network proxy&lt;/td&gt;
&lt;td&gt;Domain entries alone do not activate enforcement.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remove the local sandbox&lt;/td&gt;
&lt;td&gt;Use dangerous full access only inside an externally isolated environment&lt;/td&gt;
&lt;td&gt;Full access does not diagnose why the original task failed.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This table is a diagnostic order, not a recommendation to escalate through every row.&lt;/p&gt;

&lt;h2&gt;
  
  
  Network access has two separate switches
&lt;/h2&gt;

&lt;p&gt;The current Codex permission-profile documentation makes an important distinction:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;network.enabled = true&lt;/code&gt; permits commands to use the network.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;features.network_proxy = true&lt;/code&gt; activates enforcement of the profile's domain rules.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With networking on and the proxy off, commands have direct network access and the domain rules do not constrain it. That is not an allowlisted setup, even if the TOML contains an allowlist.&lt;/p&gt;

&lt;p&gt;A minimal named-profile shape looks like this:&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="py"&gt;default_permissions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"project-api"&lt;/span&gt;

&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;network_proxy&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="nn"&gt;[permissions.project-api]&lt;/span&gt;
&lt;span class="py"&gt;extends&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;":workspace"&lt;/span&gt;

&lt;span class="nn"&gt;[permissions.project-api.filesystem.":workspace_roots"]&lt;/span&gt;
&lt;span class="py"&gt;"**/*.env"&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"deny"&lt;/span&gt;

&lt;span class="nn"&gt;[permissions.project-api.network]&lt;/span&gt;
&lt;span class="py"&gt;enabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="nn"&gt;[permissions.project-api.network.domains]&lt;/span&gt;
&lt;span class="py"&gt;"api.openai.com"&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"allow"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important idea is not the example hostname. It is that filesystem scope, permission to use the network, and network-policy enforcement remain visible as separate decisions.&lt;/p&gt;

&lt;p&gt;Do not mix this permission-profile model with legacy &lt;code&gt;sandbox_mode&lt;/code&gt; settings in the same effective configuration. OpenAI currently documents them as alternative configuration families.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I checked on the current Windows CLI
&lt;/h2&gt;

&lt;p&gt;On September 21, 2026, the resolved local installation reported:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;codex-cli 0.155.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Its main help exposed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;read-only&lt;/code&gt;, &lt;code&gt;workspace-write&lt;/code&gt;, and &lt;code&gt;danger-full-access&lt;/code&gt; sandbox values;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;on-request&lt;/code&gt; and &lt;code&gt;never&lt;/code&gt; approval values;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--add-dir&lt;/code&gt; for an additional writable directory;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--dangerously-bypass-approvals-and-sandbox&lt;/code&gt;, labeled extremely dangerous;&lt;/li&gt;
&lt;li&gt;and a separate &lt;code&gt;codex sandbox -P &amp;lt;profile&amp;gt;&lt;/code&gt; path for checking a named permission profile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also preserved a failed check. Running this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;sandbox&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;windows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--help&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;did not display a Windows subcommand reference. The current CLI parsed &lt;code&gt;windows --help&lt;/code&gt; as a command to run inside the sandbox, and that attempt failed. The verified current help form is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;sandbox&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--help&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That failure is not evidence that the sandbox is broken. It is evidence that remembered syntax can be wrong even when the underlying idea is right. Check the installed CLI instead of copying an old command shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  A five-minute boundary check
&lt;/h2&gt;

&lt;p&gt;Before editing a real configuration:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Resolve every installed Codex command and record the active version.&lt;/li&gt;
&lt;li&gt;Read the current help for the exact surface you will use.&lt;/li&gt;
&lt;li&gt;Write down the one missing capability: prompt behavior, file read, file write, command network, or external action.&lt;/li&gt;
&lt;li&gt;Start from a disposable project with no credentials or production scripts.&lt;/li&gt;
&lt;li&gt;Test one operation that should succeed and one harmless operation that should be denied.&lt;/li&gt;
&lt;li&gt;Inspect the resulting artifact outside Codex.&lt;/li&gt;
&lt;li&gt;Change only one control before the next test.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the first error changes after several settings change together, stop. You have lost the causal evidence needed to know which boundary mattered.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical rule
&lt;/h2&gt;

&lt;p&gt;Use fewer prompts when the problem is prompts. Add one directory when the problem is one directory. Enable and constrain command networking when the problem is networking. Review external tools under their own authority model.&lt;/p&gt;

&lt;p&gt;Full access is the last answer because it removes evidence as well as friction.&lt;/p&gt;

&lt;p&gt;For the complete Windows decision matrix, current configuration families, &lt;code&gt;default_permissions&lt;/code&gt; recovery, network-proxy checks, and rollback boundaries, use the &lt;a href="https://tgwise.com/guides/codex-windows-permissions/" rel="noopener noreferrer"&gt;Codex Windows permissions guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/codex/permissions/" rel="noopener noreferrer"&gt;OpenAI: Permissions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/codex/agent-approvals-security/" rel="noopener noreferrer"&gt;OpenAI: Agent approvals and security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/codex/cli/reference/" rel="noopener noreferrer"&gt;OpenAI: CLI reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/codex/config-reference/" rel="noopener noreferrer"&gt;OpenAI: Configuration reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Disclosure: This article was drafted with AI assistance. The product facts were checked against current OpenAI documentation, and the CLI behavior was checked locally on the version named above. No credentials or user configuration were read.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>cli</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Codex Sandbox Escape: What to Check Before Opening an Untrusted Repository</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Mon, 21 Sep 2026 05:56:22 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/codex-sandbox-escape-what-to-check-before-opening-an-untrusted-repository-2oin</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/codex-sandbox-escape-what-to-check-before-opening-an-untrusted-repository-2oin</guid>
      <description>&lt;p&gt;Updating Codex is necessary. It is not the same as making an unknown repository trustworthy.&lt;/p&gt;

&lt;p&gt;Two recently disclosed sandbox escapes make that distinction concrete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Overpatch&lt;/strong&gt; used attacker-controlled patch paths to widen where &lt;code&gt;apply_patch&lt;/code&gt; could write.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heapjack&lt;/strong&gt; targeted the boundary between sandboxed JavaScript and a privileged native helper in Codex Desktop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The researchers reported both issues to OpenAI on August 12, 2026 and say both were fixed within eight days. OpenAI's public Codex CLI 0.149.0 changelog independently records a fix that prevents &lt;code&gt;apply_patch&lt;/code&gt; from widening write permissions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The minimum version check
&lt;/h2&gt;

&lt;p&gt;Run this before opening an unfamiliar repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--version&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The current evidence supports these minimums:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Surface&lt;/th&gt;
&lt;th&gt;Minimum&lt;/th&gt;
&lt;th&gt;Evidence boundary&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex CLI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.149.0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OpenAI's release record includes the &lt;code&gt;apply_patch&lt;/code&gt; permission fix.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex Desktop&lt;/td&gt;
&lt;td&gt;build &lt;code&gt;26.818.21641&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;This threshold is reported by the researchers and repeated by BleepingComputer.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Use a later stable build when available. Do not read this table as a claim that every possible sandbox weakness has been eliminated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why updating is only the first gate
&lt;/h2&gt;

&lt;p&gt;A coding agent does more than display source code. Depending on its permissions and tool setup, it may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read repository instructions and configuration;&lt;/li&gt;
&lt;li&gt;launch package managers, test runners, hooks, or build scripts;&lt;/li&gt;
&lt;li&gt;edit files in the workspace;&lt;/li&gt;
&lt;li&gt;call MCP servers or other installed tools;&lt;/li&gt;
&lt;li&gt;inherit access to credentials, sockets, or network destinations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means “take a quick look at this repository” is an execution decision, not merely a reading decision.&lt;/p&gt;

&lt;p&gt;Patching fixes a known implementation bug. It does not remove malicious repository content, unsafe dependencies, exposed secrets, overpowered tools, or an operator approving the wrong action.&lt;/p&gt;

&lt;h2&gt;
  
  
  A safer untrusted-repository preflight
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Separate the repository from valuable state
&lt;/h3&gt;

&lt;p&gt;Use a disposable directory or VM that does not contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;production &lt;code&gt;.env&lt;/code&gt; files;&lt;/li&gt;
&lt;li&gt;SSH keys or reusable access tokens;&lt;/li&gt;
&lt;li&gt;cloud credentials;&lt;/li&gt;
&lt;li&gt;browser profiles or session cookies;&lt;/li&gt;
&lt;li&gt;production deployment scripts with active credentials;&lt;/li&gt;
&lt;li&gt;writable mounts into important workspaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not treat “read-only” as permission to expose secrets. Heapjack matters precisely because a nominally restrictive mode did not contain the full attack path described by the researchers.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Identify the exact Codex surface
&lt;/h3&gt;

&lt;p&gt;CLI, Desktop, IDE integrations, bundled binaries, and package-manager installs can resolve to different versions and helpers.&lt;/p&gt;

&lt;p&gt;Record the surface and version you are actually testing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--version&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Command&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-All&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;CommandType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Source&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Version&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A passing CLI check does not prove that a Desktop or IDE path uses the same components.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Start without repository-controlled execution
&lt;/h3&gt;

&lt;p&gt;Before running installs, builds, tests, or hooks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inspect the top-level file names.&lt;/li&gt;
&lt;li&gt;Read repository instructions as untrusted input.&lt;/li&gt;
&lt;li&gt;Review package scripts and tool configuration.&lt;/li&gt;
&lt;li&gt;Identify symlinks, submodules, generated binaries, and external tool definitions.&lt;/li&gt;
&lt;li&gt;Decide which single command, if any, is justified next.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do not start with &lt;code&gt;npm install&lt;/code&gt;, a bootstrap script, or “fix everything.” Those actions dramatically expand the code and tools involved.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Use the smallest capability set
&lt;/h3&gt;

&lt;p&gt;Begin with no network and no write access when the task permits it. If a later step needs one capability, grant that capability for a bounded task instead of widening the whole session.&lt;/p&gt;

&lt;p&gt;Keep these decisions separate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can the agent ask for approval?&lt;/li&gt;
&lt;li&gt;Can the process read or write this path?&lt;/li&gt;
&lt;li&gt;Can it reach the network?&lt;/li&gt;
&lt;li&gt;Can an installed tool act outside the repository?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An approval policy and a sandbox policy are not interchangeable.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Verify the artifact outside the agent
&lt;/h3&gt;

&lt;p&gt;Do not accept “done” or exit code &lt;code&gt;0&lt;/code&gt; as proof.&lt;/p&gt;

&lt;p&gt;For any permitted edit, independently check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the exact changed-path list;&lt;/li&gt;
&lt;li&gt;unexpected files outside the intended directory;&lt;/li&gt;
&lt;li&gt;symlink targets;&lt;/li&gt;
&lt;li&gt;the required output's existence and hash when useful;&lt;/li&gt;
&lt;li&gt;whether credentials, environment data, or unrelated files appeared in logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the required artifact is absent, the task failed even if the final message says it succeeded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Windows failures are a separate problem
&lt;/h2&gt;

&lt;p&gt;Security patching and Windows sandbox troubleshooting should not be collapsed into one repair.&lt;/p&gt;

&lt;p&gt;For example, &lt;code&gt;CreateProcessWithLogonW failed: 1385&lt;/code&gt; points to a Windows logon-right boundary for the sandbox user. Helper-not-found, setup refresh, UAC errors, token setup failures, read-only workspaces, and child-process denials occur at different gates.&lt;/p&gt;

&lt;p&gt;I keep the complete Windows classification flow, redacted evidence packet, rollback boundary, and source list in this &lt;a href="https://tgwise.com/guides/codex-windows-sandbox-error/" rel="noopener noreferrer"&gt;Codex Windows sandbox failure clinic&lt;/a&gt;. There is also a &lt;a href="https://tgwise.com/tools/codex-windows-sandbox-triage/" rel="noopener noreferrer"&gt;browser-local sandbox triage tool&lt;/a&gt; that classifies the first observed error without uploading logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical stop rule
&lt;/h2&gt;

&lt;p&gt;Stop the run when any of these is true:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the resolved Codex version is below the required patched version;&lt;/li&gt;
&lt;li&gt;the repository needs credentials before its purpose is understood;&lt;/li&gt;
&lt;li&gt;a script asks for broader filesystem or network access than the task requires;&lt;/li&gt;
&lt;li&gt;the first error changes after several settings are modified at once;&lt;/li&gt;
&lt;li&gt;the agent reports completion but the required artifact cannot be independently verified;&lt;/li&gt;
&lt;li&gt;the only proposed fix is to disable the sandbox or use unrestricted host access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The safe response is not “try harder.” It is to preserve the first evidence, reduce the environment, and decide whether the repository deserves any execution authority at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/openai/codex/releases/tag/rust-v0.149.0" rel="noopener noreferrer"&gt;OpenAI Codex CLI 0.149.0 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.accomplish.ai/blog/escaping-the-openai-codex-sandbox-twice/" rel="noopener noreferrer"&gt;Accomplish: Escaping the OpenAI Codex sandbox, twice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.bleepingcomputer.com/news/security/researchers-escape-openai-codex-sandbox-to-run-commands-on-host/" rel="noopener noreferrer"&gt;BleepingComputer: Researchers escape OpenAI Codex sandbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Disclosure: This article was drafted with AI assistance and checked against the cited sources. Product release evidence, researcher claims, and operational recommendations are labeled separately.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>opensource</category>
      <category>cli</category>
    </item>
    <item>
      <title>What “Crawled – Currently Not Indexed” Looked Like on a 400-URL AI Site</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Sun, 20 Sep 2026 09:24:21 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/what-crawled-currently-not-indexed-looked-like-on-a-400-url-ai-site-279p</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/what-crawled-currently-not-indexed-looked-like-on-a-400-url-ai-site-279p</guid>
      <description>&lt;p&gt;A few weeks ago, one of my AI workflow sites looked healthy in Google Search Console. Google was crawling it, the server was fast, and the sitemap was valid. Then impressions collapsed.&lt;/p&gt;

&lt;p&gt;The useful part is that this was not a robots.txt bug, a manual action, or a security warning. It was a site-quality and prioritization failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The before-and-after
&lt;/h2&gt;

&lt;p&gt;For two complete seven-day periods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Aug 9–15:&lt;/strong&gt; 2,030 impressions, 29 clicks, average position 16.9&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aug 16–22:&lt;/strong&gt; 68 impressions, 0 clicks, average position 35.6&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is a &lt;strong&gt;96.7% impression loss&lt;/strong&gt; in one week.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Google was telling me
&lt;/h2&gt;

&lt;p&gt;The submitted-URL report showed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;68 indexed URLs&lt;/li&gt;
&lt;li&gt;332 not indexed&lt;/li&gt;
&lt;li&gt;162 “Crawled – currently not indexed”&lt;/li&gt;
&lt;li&gt;170 “Discovered – currently not indexed”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Crawl stats were not the problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1,830 crawl requests&lt;/li&gt;
&lt;li&gt;85% successful 200 responses&lt;/li&gt;
&lt;li&gt;91 ms average response time&lt;/li&gt;
&lt;li&gt;no manual action&lt;/li&gt;
&lt;li&gt;no security issue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The site also had &lt;strong&gt;zero external links recognized by Search Console&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mistake
&lt;/h2&gt;

&lt;p&gt;The site expanded from roughly 246 indexable routes to 274 in a few days. Many pages covered release numbers, short-lived product changes, and closely related troubleshooting topics.&lt;/p&gt;

&lt;p&gt;Each page could be factually correct and still fail the larger test: &lt;strong&gt;does this URL own a distinct user job, contain independent evidence, and deserve to remain useful after the release cycle ends?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google crawled the pages. It did not choose to keep most of them in the index.&lt;/p&gt;

&lt;h2&gt;
  
  
  The recovery work
&lt;/h2&gt;

&lt;p&gt;I stopped adding version-news pages and reduced the live sitemap from 400 reported URLs to 195 current routes.&lt;/p&gt;

&lt;p&gt;The recovery sequence is now:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep one URL for one durable intent.&lt;/li&gt;
&lt;li&gt;Merge overlapping answers.&lt;/li&gt;
&lt;li&gt;Redirect superseded pages.&lt;/li&gt;
&lt;li&gt;Return 410 only for content with no replacement.&lt;/li&gt;
&lt;li&gt;Preserve pages with proven query demand.&lt;/li&gt;
&lt;li&gt;Request indexing for a few demand-backed pages, not the entire site.&lt;/li&gt;
&lt;li&gt;Build real citations instead of repeatedly submitting IndexNow.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, the page on &lt;a href="https://tgwise.com/guides/codex-windows-permissions/" rel="noopener noreferrer"&gt;Codex Windows permissions&lt;/a&gt; stays because Search Console showed real query demand and the page owns a specific troubleshooting job.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would do differently
&lt;/h2&gt;

&lt;p&gt;I would not treat successful deployment, sitemap submission, or IndexNow acceptance as SEO progress. Those prove delivery, not ranking eligibility.&lt;/p&gt;

&lt;p&gt;I would publish fewer pages, require a distinct search intent and evidence boundary for every route, and build external references before expanding the catalog.&lt;/p&gt;

&lt;p&gt;The site is not “recovered” yet. The reduced sitemap has only just been resubmitted, and Google still has to reprocess it. I am publishing the failure pattern now because it is more useful than another generic indexing checklist.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These numbers come from one Search Console property. They document one recovery case; they do not prove a universal ranking factor.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>beginners</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Codex CLI 0.147: Test Agent Plugins, Approvals, and MCP Separately</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Sat, 15 Aug 2026 18:42:09 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/codex-cli-0147-test-agent-plugins-approvals-and-mcp-separately-6h4</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/codex-cli-0147-test-agent-plugins-approvals-and-mcp-separately-6h4</guid>
      <description>&lt;p&gt;Codex CLI 0.147 combines several changes that affect different trust boundaries. Treating the upgrade as one pass/fail event misses the failures that matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short answer
&lt;/h2&gt;

&lt;p&gt;Test five things independently:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One portable Agent Plugin.&lt;/li&gt;
&lt;li&gt;One &lt;code&gt;--approve-for-me&lt;/code&gt; boundary.&lt;/li&gt;
&lt;li&gt;One MCP server using the opt-in 2026-07-28 protocol.&lt;/li&gt;
&lt;li&gt;One imported skill or conversation.&lt;/li&gt;
&lt;li&gt;One interrupted Windows background process.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A successful launch proves only that Codex started. It does not prove that plugin provenance, approval scope, protocol negotiation, imported context, or process cleanup are correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent Plugins need a provenance receipt
&lt;/h2&gt;

&lt;p&gt;Portable plugins can move instructions, tools, apps, and supporting files between environments. Before activation, record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;source repository and reviewed revision,&lt;/li&gt;
&lt;li&gt;enabled scope,&lt;/li&gt;
&lt;li&gt;declared tools and network destinations,&lt;/li&gt;
&lt;li&gt;expected files or commands,&lt;/li&gt;
&lt;li&gt;one allowed operation and one denied operation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then disable the plugin and start a fresh session. The capability should disappear. Catalog visibility is not execution proof.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;--approve-for-me&lt;/code&gt; is not unrestricted execution
&lt;/h2&gt;

&lt;p&gt;The flag adds automatic approval review. It does not erase the sandbox, network policy, managed restrictions, or the need to verify side effects.&lt;/p&gt;

&lt;p&gt;Use a disposable workspace and check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one operation that should be approved,&lt;/li&gt;
&lt;li&gt;one operation that should remain denied,&lt;/li&gt;
&lt;li&gt;the exact artifact created,&lt;/li&gt;
&lt;li&gt;the command and network evidence,&lt;/li&gt;
&lt;li&gt;the result after restarting the session.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Codex 0.147 also removes the deprecated &lt;code&gt;codex exec --full-auto&lt;/code&gt; shortcut. Unattended workflows should declare sandbox and approval behavior explicitly.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP needs a protocol-level check
&lt;/h2&gt;

&lt;p&gt;Opt-in MCP 2026-07-28 support adds capabilities such as paginated discovery and multi-round requests. A connected server can still fail during tool discovery, schema validation, one invocation, or response handling.&lt;/p&gt;

&lt;p&gt;Record the negotiated protocol version, enumerate tools, call one bounded tool, and verify the artifact outside Codex.&lt;/p&gt;

&lt;h2&gt;
  
  
  Imported context needs ownership rules
&lt;/h2&gt;

&lt;p&gt;Cursor-managed skills and imported Claude or Cursor conversations increase reusable context. They also increase the chance of stale instructions, duplicate guidance, and hidden conflicts.&lt;/p&gt;

&lt;p&gt;Pin the source, inspect references, run a known-answer task, and confirm which instruction won when scopes conflict.&lt;/p&gt;

&lt;h2&gt;
  
  
  Windows needs a real interruption test
&lt;/h2&gt;

&lt;p&gt;The release includes Windows process and path fixes. Verify them by starting a harmless bounded background task, interrupting it, and checking both the process tree and expected artifact state. A quiet terminal is not proof that the child process stopped.&lt;/p&gt;

&lt;h2&gt;
  
  
  Release gate
&lt;/h2&gt;

&lt;p&gt;Upgrade only when every boundary has its own evidence receipt. If one check fails, roll back or disable only that capability instead of deleting unrelated configuration.&lt;/p&gt;

&lt;p&gt;Official release:&lt;br&gt;
&lt;a href="https://github.com/openai/codex/releases/tag/rust-v0.147.0" rel="noopener noreferrer"&gt;https://github.com/openai/codex/releases/tag/rust-v0.147.0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Complete source-linked analysis and acceptance checklist:&lt;br&gt;
&lt;a href="https://tgwise.com/intelligence/codex-cli-0-147-agent-plugins-approve-for-me-mcp/" rel="noopener noreferrer"&gt;https://tgwise.com/intelligence/codex-cli-0-147-agent-plugins-approve-for-me-mcp/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>ChatGPT Agent Is Gone: How to Choose ChatGPT Work vs Codex</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Sat, 15 Aug 2026 18:41:30 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/chatgpt-agent-is-gone-how-to-choose-chatgpt-work-vs-codex-p18</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/chatgpt-agent-is-gone-how-to-choose-chatgpt-work-vs-codex-p18</guid>
      <description>&lt;p&gt;ChatGPT agent is no longer available. Reinstalling the desktop app will not restore the old surface. OpenAI now separates longer non-code work, repository work, and browser authority across different tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short answer
&lt;/h2&gt;

&lt;p&gt;Use &lt;strong&gt;ChatGPT Work&lt;/strong&gt; for research, analysis, documents, spreadsheets, presentations, reports, and Sites.&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;Codex&lt;/strong&gt; for repository edits, tests, commands, code review, and software-development workflows.&lt;/p&gt;

&lt;p&gt;Use the &lt;strong&gt;desktop built-in browser&lt;/strong&gt; when the user can sign in and authorize specific tabs. Use the &lt;strong&gt;Codex Chrome extension&lt;/strong&gt; when the task needs an existing Chrome profile, cookies, sessions, or extensions. The cloud browser is for supported public pages and should stop at sign-in or payment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why ChatGPT agent disappeared
&lt;/h2&gt;

&lt;p&gt;This is a product transition, not a local installation failure. OpenAI's current guidance directs longer multi-step work and finished deliverables to ChatGPT Work while keeping Codex as the software-development surface.&lt;/p&gt;

&lt;p&gt;If Work is missing, check plan eligibility, staged rollout, workspace role, model availability, and organizational policy before reinstalling anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose by final artifact
&lt;/h2&gt;

&lt;p&gt;Ask what the workflow must produce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A research packet, spreadsheet, presentation, report, or Site: choose ChatGPT Work.&lt;/li&gt;
&lt;li&gt;A code change, test result, patch, command log, or repository review: choose Codex.&lt;/li&gt;
&lt;li&gt;A task that must inspect an authenticated website: use a human-controlled signed-in browser surface.&lt;/li&gt;
&lt;li&gt;A public-page lookup without authentication: cloud browser may be sufficient.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The name of the old tool is less important than the destination artifact and authority boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rewrite old agent prompts
&lt;/h2&gt;

&lt;p&gt;Do not simply replace the words &lt;code&gt;ChatGPT agent&lt;/code&gt; with &lt;code&gt;ChatGPT Work&lt;/code&gt;. Rewrite the task contract to name:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The approved source set.&lt;/li&gt;
&lt;li&gt;The final artifact and format.&lt;/li&gt;
&lt;li&gt;The local files, connected apps, or browser tabs allowed.&lt;/li&gt;
&lt;li&gt;Actions that require confirmation.&lt;/li&gt;
&lt;li&gt;Review criteria, retry limit, and stop condition.&lt;/li&gt;
&lt;li&gt;Evidence that proves the result outside the completion message.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This prevents an old prompt from silently carrying browser, credential, payment, or filesystem assumptions into a different execution surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep browser boundaries explicit
&lt;/h2&gt;

&lt;p&gt;Cloud browser, the desktop built-in browser, the Chrome extension, connected apps, local files, and repository tools have different authority.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do not paste passwords or payment details into a Work task.&lt;/li&gt;
&lt;li&gt;Sign in yourself on the human-controlled browser surface.&lt;/li&gt;
&lt;li&gt;Open only the minimum folder, app, or tab required.&lt;/li&gt;
&lt;li&gt;Review consequential confirmations before they run.&lt;/li&gt;
&lt;li&gt;Verify the final file and external state independently.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Migration checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Classify the old task by its final artifact.&lt;/li&gt;
&lt;li&gt;Choose Work, Codex, or the appropriate browser surface.&lt;/li&gt;
&lt;li&gt;Remove obsolete assumptions about the former agent interface.&lt;/li&gt;
&lt;li&gt;Re-check plan and workspace eligibility.&lt;/li&gt;
&lt;li&gt;Name protected actions and approval gates.&lt;/li&gt;
&lt;li&gt;Run one bounded known-answer task before migrating scheduled work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The complete source-linked transition map, browser boundaries, and operating checklist are available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tgwise.com/intelligence/chatgpt-agent-transitioned-to-chatgpt-work/" rel="noopener noreferrer"&gt;https://tgwise.com/intelligence/chatgpt-agent-transitioned-to-chatgpt-work/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>ai</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>Claude Code Plugin Not Found: Diagnose Marketplace, Scope, or Runtime</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Sat, 15 Aug 2026 17:50:53 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/claude-code-plugin-not-found-diagnose-marketplace-scope-or-runtime-19l2</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/claude-code-plugin-not-found-diagnose-marketplace-scope-or-runtime-19l2</guid>
      <description>&lt;p&gt;A Claude Code plugin can disappear for several different reasons, and the error message tells you which layer to inspect first. Do not start by deleting caches or reinstalling everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Freeze the exact error
&lt;/h2&gt;

&lt;p&gt;These messages are not interchangeable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;marketplace not found&lt;/code&gt;: the catalog is not registered.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;plugin not found&lt;/code&gt;: the marketplace is visible, but the exact plugin identifier is absent.&lt;/li&gt;
&lt;li&gt;Installed but missing: check scope, enabled state, activation, loader errors, dependencies, and runtime paths.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/plugin&lt;/code&gt; or &lt;code&gt;/reload-plugins&lt;/code&gt; unavailable: you may be using the wrong command surface or an unsupported environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Record the Claude Code version, terminal or desktop surface, exact marketplace name, exact plugin identifier, intended scope, and complete redacted error.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Prove the marketplace before the plugin
&lt;/h2&gt;

&lt;p&gt;In a shell, inventory the registered catalogs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude plugin marketplace list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside an interactive Claude Code session, the official marketplace can be added with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add anthropics/claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the named marketplace is not listed, stop at marketplace registration or policy. Installing the plugin again cannot repair an absent catalog.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Check the exact identifier and refresh boundary
&lt;/h2&gt;

&lt;p&gt;Compare the full &lt;code&gt;plugin-name@marketplace-name&lt;/code&gt; value with the Discover and Installed views.&lt;/p&gt;

&lt;p&gt;Claude Code 2.1.221 introduced one stale-catalog refresh and retry when auto-update is enabled. On older versions, or when auto-update is disabled, update the exact marketplace once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace update MARKETPLACE_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the exact identifier still is not listed, do not loop updates or switch catalogs at random.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Separate scope, activation, and loader failures
&lt;/h2&gt;

&lt;p&gt;A healthy install can still be hidden by user, project, local, or managed settings. Inspect structured state before adding another copy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude plugin list --json
claude plugin details PLUGIN_NAME@MARKETPLACE_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then check whether the plugin is enabled, whether the current session needs &lt;code&gt;/reload-plugins&lt;/code&gt;, and whether the Errors tab reports a manifest, path, dependency, hook, MCP, or LSP failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Verify the runtime path
&lt;/h2&gt;

&lt;p&gt;A Windows host path does not automatically exist inside WSL, a Dev Container, a cloud session, or another checkout. Verify required executables and plugin paths inside the same runtime that launches Claude Code.&lt;/p&gt;

&lt;p&gt;Run one known-answer command, skill, agent, LSP action, or read-only MCP tool from the plugin. A successful install message is not the acceptance test.&lt;/p&gt;

&lt;h2&gt;
  
  
  What not to do
&lt;/h2&gt;

&lt;p&gt;Do not delete plugin caches, rewrite shared settings, copy plugin directories across environments, or remove marketplaces before the first failed gate is proven. Preserve the evidence needed to distinguish catalog, scope, activation, loader, dependency, and runtime failures.&lt;/p&gt;

&lt;p&gt;The full source-linked decision tree, commands, recovery boundaries, and official references are available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tgwise.com/guides/claude-code-plugin-not-found/" rel="noopener noreferrer"&gt;https://tgwise.com/guides/claude-code-plugin-not-found/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>tutorial</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Claude Code 2.1.232: Six Regression Checks That Matter</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Sat, 15 Aug 2026 17:26:23 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/claude-code-21232-six-regression-checks-that-matter-4bna</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/claude-code-21232-six-regression-checks-that-matter-4bna</guid>
      <description>&lt;p&gt;Claude Code 2.1.232 changes more than the version number. Forked subagents now inherit the full conversation and prompt cache by default, interactive non-teammate spawns move to the background, and Windows permission bypasses were closed.&lt;/p&gt;

&lt;p&gt;That means a successful launch is not enough. Context inheritance, session routing, permissions, repository trust, MCP probes, and Remote Control recovery are separate operating boundaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Verify inherited context
&lt;/h2&gt;

&lt;p&gt;Spawn one child agent with a harmless task. Confirm that it sees the intended parent context and does not inherit unrelated instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Verify background completion
&lt;/h2&gt;

&lt;p&gt;Start one interactive non-teammate child. Check that it moves to the background and that its final status returns to the expected parent session.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Verify session-name routing
&lt;/h2&gt;

&lt;p&gt;Resume or message a session by name. Confirm the message reaches the intended session rather than another similarly named run.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Test one allowed and one denied write on Windows
&lt;/h2&gt;

&lt;p&gt;Use a disposable fixture. Perform one harmless write inside the approved path, then attempt one write that should be denied. Both outcomes matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Check nested repository trust
&lt;/h2&gt;

&lt;p&gt;Open a nested repository and verify that the trust boundary is explicit. Do not assume the parent repository's approval automatically covers every nested path.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Force a recovery path
&lt;/h2&gt;

&lt;p&gt;Trigger one bounded MCP probe failure and one Remote Control resume. Confirm that tools, session state, and recovery messages remain coherent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The acceptance rule
&lt;/h2&gt;

&lt;p&gt;Use one symptom, one fixture, and one changed layer. A broad end-to-end run can pass while a permission or routing regression remains hidden.&lt;/p&gt;

&lt;p&gt;The full source-linked checklist, including the official release evidence and rollback boundaries, is available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tgwise.com/intelligence/claude-code-2-1-232-forked-subagents-windows-permission-fixes/" rel="noopener noreferrer"&gt;https://tgwise.com/intelligence/claude-code-2-1-232-forked-subagents-windows-permission-fixes/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>claude</category>
      <category>ai</category>
    </item>
    <item>
      <title>Claude Code 2.1.226 vs 2.1.225: What Actually Changed</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Sat, 08 Aug 2026 15:30:45 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/claude-code-21226-vs-21225-what-actually-changed-1app</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/claude-code-21226-vs-21225-what-actually-changed-1app</guid>
      <description>&lt;p&gt;Claude Code 2.1.226 and 2.1.225 landed close together, but they should not be treated as equivalent upgrade events.&lt;/p&gt;

&lt;p&gt;The 2.1.226 release note is intentionally terse: it describes bug fixes and reliability improvements without listing a new workflow or user-facing capability. The concrete upgrade checks are concentrated in 2.1.225.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actionable changes in 2.1.225
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. OAuth token precedence
&lt;/h3&gt;

&lt;p&gt;Claude Code fixed refresh-token precedence when a long-lived &lt;code&gt;CLAUDE_CODE_OAUTH_TOKEN&lt;/code&gt; is configured.&lt;/p&gt;

&lt;p&gt;Why it matters: a valid long-lived token should not be displaced by a stale or unintended refresh path. Teams that inject credentials through CI, remote workspaces, or managed shells should re-test authentication after upgrading.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Workspace trust for &lt;code&gt;claude agents&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Running &lt;code&gt;claude agents&lt;/code&gt; now prompts for workspace trust before it loads project-scoped agent definitions.&lt;/p&gt;

&lt;p&gt;Why it matters: project configuration is executable influence. Trust must be decided before local instructions or agent definitions are accepted, not after.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. MCP OAuth 401 recovery on macOS
&lt;/h3&gt;

&lt;p&gt;The release fixes an MCP OAuth failure path caused by a Keychain read timeout that could surface as a 401.&lt;/p&gt;

&lt;p&gt;Why it matters: if an MCP connector suddenly appears unauthorized even though the account is valid, the problem may be local credential retrieval rather than the remote service.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Remote Control recovery
&lt;/h3&gt;

&lt;p&gt;Remote Control can resume more reliably after manual compaction.&lt;/p&gt;

&lt;p&gt;Why it matters: long sessions frequently compact at the exact point where remote continuity matters. A release is only useful if the remote session remains recoverable after context maintenance.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Safer SendMessage routing
&lt;/h3&gt;

&lt;p&gt;SendMessage behavior was tightened for named Remote Control sessions, including same-name safety.&lt;/p&gt;

&lt;p&gt;Why it matters: a readable session name is not a unique identifier. Workflows that address multiple sessions should verify routing instead of assuming names cannot collide.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Gateway spend-limit warnings
&lt;/h3&gt;

&lt;p&gt;Gateway users receive clearer spend-limit warnings.&lt;/p&gt;

&lt;p&gt;Why it matters: an authentication-looking failure can actually be a quota or spend-limit condition. Operational checks should distinguish credentials, transport, provider status, and billing limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical upgrade acceptance test
&lt;/h2&gt;

&lt;p&gt;Do not stop at &lt;code&gt;claude --version&lt;/code&gt;. Run a small acceptance set:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm the installed version in the same shell and runtime used for real work.&lt;/li&gt;
&lt;li&gt;Test the configured OAuth token path in a fresh session.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;claude agents&lt;/code&gt; inside a project that has local agent definitions and verify the trust prompt appears before those definitions are loaded.&lt;/li&gt;
&lt;li&gt;Reconnect one MCP OAuth integration on macOS and confirm that an old 401 does not reproduce.&lt;/li&gt;
&lt;li&gt;Start a Remote Control session, compact manually, and verify that the session resumes.&lt;/li&gt;
&lt;li&gt;If you use SendMessage, test two similarly named sessions and confirm messages reach the intended target.&lt;/li&gt;
&lt;li&gt;For gateway deployments, simulate or inspect a spend-limit condition and confirm it is reported distinctly from authentication failure.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This separates "the package updated" from "the workflow still works."&lt;/p&gt;

&lt;h2&gt;
  
  
  Primary sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/anthropics/claude-code/releases/tag/v2.1.226" rel="noopener noreferrer"&gt;Claude Code v2.1.226 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anthropics/claude-code/releases/tag/v2.1.225" rel="noopener noreferrer"&gt;Claude Code v2.1.225 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.claude.com/docs/en/changelog" rel="noopener noreferrer"&gt;Official Claude Code changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A source-mapped version of this diagnostic, including the upgrade checks, is maintained at &lt;a href="https://tgwise.com/intelligence/claude-code-2-1-226-2-1-225-oauth-workspace-trust-remote-control/" rel="noopener noreferrer"&gt;TGWise Agent Lab&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I maintain TGWise Agent Lab. The linked page is an editorial diagnostic based on the official release notes; it is not affiliated with Anthropic.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Fix Codex default_permissions Without Disabling the Sandbox</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Fri, 07 Aug 2026 09:35:08 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/fix-codex-defaultpermissions-without-disabling-the-sandbox-1bcp</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/fix-codex-defaultpermissions-without-disabling-the-sandbox-1bcp</guid>
      <description>&lt;p&gt;The Codex error saying that permission profiles exist without &lt;code&gt;default_permissions&lt;/code&gt; is not a request to disable safety. It means the effective configuration contains profile definitions but does not select a default profile.&lt;/p&gt;

&lt;p&gt;The fastest fix is to decide which configuration model the run should use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Path 1: keep the legacy sandbox model
&lt;/h2&gt;

&lt;p&gt;Use this path when the run already relies on &lt;code&gt;sandbox_mode&lt;/code&gt;, &lt;code&gt;approval_policy&lt;/code&gt;, or &lt;code&gt;[sandbox_workspace_write]&lt;/code&gt; settings.&lt;/p&gt;

&lt;p&gt;Keep those settings together and remove unused &lt;code&gt;[permissions.*]&lt;/code&gt; blocks. An explicit &lt;code&gt;--sandbox&lt;/code&gt; flag also selects this model for the run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Path 2: use permission profiles
&lt;/h2&gt;

&lt;p&gt;Use this path when you want a built-in or named profile. Remove loaded legacy &lt;code&gt;sandbox_mode&lt;/code&gt; settings, set &lt;code&gt;default_permissions&lt;/code&gt;, and provide the matching profile block.&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="py"&gt;default_permissions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"project-edit"&lt;/span&gt;

&lt;span class="nn"&gt;[permissions.project-edit]&lt;/span&gt;
&lt;span class="py"&gt;extends&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;":workspace"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start from a bounded profile. Add filesystem or network exceptions only after the task proves it needs them.&lt;/p&gt;

&lt;h2&gt;
  
  
  No-prompt mode is not full access
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;approval_policy = "never"&lt;/code&gt; suppresses approval prompts. It does not widen the selected sandbox or permission profile. A workspace-bounded run remains workspace-bounded.&lt;/p&gt;

&lt;p&gt;This distinction matters for unattended work. Removing prompts can make a bounded workflow repeatable, but it is not a substitute for defining the boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify the effective run
&lt;/h2&gt;

&lt;p&gt;Do not trust one TOML file in isolation. Record the Codex version, inspect every loaded config layer, resolve the named profile from the intended project root, and test write and network behavior with harmless operations.&lt;/p&gt;

&lt;p&gt;A bounded profile-resolution probe on Windows is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;codex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;sandbox&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-P&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;project-edit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-C&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\absolute\project\path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;powershell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-NoProfile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Command&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Get-Location"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This proves the profile name resolves. It does not prove write or network behavior, so test those separately.&lt;/p&gt;

&lt;p&gt;The complete decision table, Windows sandbox guidance, failure signatures, and six-step boundary checklist are in the canonical TGWise guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tgwise.com/guides/codex-windows-permissions/" rel="noopener noreferrer"&gt;https://tgwise.com/guides/codex-windows-permissions/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Disclosure: I maintain TGWise Agent Lab.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>tutorial</category>
      <category>openai</category>
    </item>
    <item>
      <title>Why Claude Code Ignores CLAUDE.md: Loading, Adherence, and Enforcement</title>
      <dc:creator>Yan Gao</dc:creator>
      <pubDate>Fri, 07 Aug 2026 06:34:14 +0000</pubDate>
      <link>https://dev.to/yan_gao_3ad90a90b26925538/why-claude-code-ignores-claudemd-loading-adherence-and-enforcement-3b95</link>
      <guid>https://dev.to/yan_gao_3ad90a90b26925538/why-claude-code-ignores-claudemd-loading-adherence-and-enforcement-3b95</guid>
      <description>&lt;p&gt;When Claude Code appears to ignore &lt;code&gt;CLAUDE.md&lt;/code&gt;, rewriting the file is often the wrong first move.&lt;/p&gt;

&lt;p&gt;The symptom can come from three different layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The instruction never entered the active session.&lt;/li&gt;
&lt;li&gt;The instruction loaded, but the model did not follow it in the task.&lt;/li&gt;
&lt;li&gt;The instruction describes an outcome that should have been enforced outside the model.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These layers need different fixes.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Prove the file loaded
&lt;/h2&gt;

&lt;p&gt;Run &lt;code&gt;/context&lt;/code&gt; and inspect the Memory files section. If the intended &lt;code&gt;CLAUDE.md&lt;/code&gt; is absent, investigate the working directory, filename, exclusions, nested scope, and active settings sources.&lt;/p&gt;

&lt;p&gt;Do not strengthen the wording of a file that is not in context.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Check scope and conflicts
&lt;/h2&gt;

&lt;p&gt;A loaded instruction can still be irrelevant to the current path or conflict with user, project, nested, or path-scoped instructions.&lt;/p&gt;

&lt;p&gt;Replace vague rules with observable behavior. A useful rule names:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;when it applies;&lt;/li&gt;
&lt;li&gt;the action to take;&lt;/li&gt;
&lt;li&gt;the artifact or command that proves completion; and&lt;/li&gt;
&lt;li&gt;the condition that blocks completion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, "follow our API standards" is difficult to verify. "When editing &lt;code&gt;src/api/**&lt;/code&gt;, run &lt;code&gt;npm run test:api&lt;/code&gt; and report the failing test if it does not pass" is testable.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Test behavior instead of recall
&lt;/h2&gt;

&lt;p&gt;Do not ask the model whether it read the file. Correctly repeating a rule proves recall, not compliance.&lt;/p&gt;

&lt;p&gt;Run one bounded task where the rule creates a visible difference. Inspect the diff, command output, or generated artifact outside the chat. If the result matters, repeat the task in a fresh session.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Move critical boundaries out of prose
&lt;/h2&gt;

&lt;p&gt;If a failure must never occur, &lt;code&gt;CLAUDE.md&lt;/code&gt; should explain the boundary but should not be its only control.&lt;/p&gt;

&lt;p&gt;Use the mechanism that can reject the bad outcome:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;permissions or a sandbox for access boundaries;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PreToolUse&lt;/code&gt; hooks for command checks;&lt;/li&gt;
&lt;li&gt;formatters and linters for deterministic style;&lt;/li&gt;
&lt;li&gt;tests for behavior;&lt;/li&gt;
&lt;li&gt;CI for release gates; and&lt;/li&gt;
&lt;li&gt;human approval for irreversible external actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The practical rule is simple: use instructions for orientation and use tooling for enforcement.&lt;/p&gt;

&lt;p&gt;The complete six-step diagnostic, current Anthropic sources, compaction checks, and a local decision tool are available in the original TGWise guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tgwise.com/guides/claude-code-ignoring-claude-md/" rel="noopener noreferrer"&gt;https://tgwise.com/guides/claude-code-ignoring-claude-md/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Disclosure: I maintain TGWise Agent Lab.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
