<?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: Peder Aaby</title>
    <description>The latest articles on DEV Community by Peder Aaby (@pederaa).</description>
    <link>https://dev.to/pederaa</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%2F4064368%2F2b647f23-00ca-4849-975d-6441a45e889d.jpeg</url>
      <title>DEV Community: Peder Aaby</title>
      <link>https://dev.to/pederaa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pederaa"/>
    <language>en</language>
    <item>
      <title>How to Know When a Claude Code Agent Needs Your Approval (Without Watching the Terminal)</title>
      <dc:creator>Peder Aaby</dc:creator>
      <pubDate>Wed, 05 Aug 2026 13:48:57 +0000</pubDate>
      <link>https://dev.to/pederaa/how-to-know-when-a-claude-code-agent-needs-your-approval-without-watching-the-terminal-5ekf</link>
      <guid>https://dev.to/pederaa/how-to-know-when-a-claude-code-agent-needs-your-approval-without-watching-the-terminal-5ekf</guid>
      <description>&lt;p&gt;The promise of background coding agents is that you kick off a task and go do something else. The reality, for a lot of people, is kicking off a task, doing something else, and coming back forty minutes later to find the agent stopped three minutes in, waiting for permission to run a command.&lt;/p&gt;

&lt;p&gt;An agent that waits silently is worse than an agent that interrupts you, because the silence costs you the whole gap. Here is every practical way to get notified the moment a Claude Code agent needs your input.&lt;/p&gt;

&lt;p&gt;Disclosure: I work on &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt;, covered as one option below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 1: Claude Code's agent view
&lt;/h2&gt;

&lt;p&gt;Claude Code has a built-in answer for multiple sessions: agent view. It shows what every session is doing and which ones need input, lets you dispatch new sessions, and while it is open, the terminal tab title shows a count of sessions awaiting input.&lt;/p&gt;

&lt;p&gt;Crucially, agent view also sends notifications through your configured terminal notification channel when a background session starts needing input, finishes, or fails. This uses the same &lt;code&gt;preferredNotifChannel&lt;/code&gt; setting as the rest of Claude Code, so make sure that is set to something you will actually notice (&lt;code&gt;terminal_bell&lt;/code&gt; or your OS notifier).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; running several Claude Code sessions from one terminal.&lt;br&gt;
&lt;strong&gt;The gap:&lt;/strong&gt; you need agent view open, and it covers Claude Code only.&lt;/p&gt;
&lt;h2&gt;
  
  
  Option 2: The Notification hook
&lt;/h2&gt;

&lt;p&gt;For full control, Claude Code fires a &lt;code&gt;Notification&lt;/code&gt; hook event with types like &lt;code&gt;agent_needs_input&lt;/code&gt; and &lt;code&gt;agent_completed&lt;/code&gt;. A hook is a shell command, so you can route it anywhere: macOS notification, Slack webhook, ntfy push to your phone.&lt;/p&gt;

&lt;p&gt;A minimal macOS example in &lt;code&gt;.claude/settings.json&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;"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;"Notification"&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;"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;"osascript -e 'display notification &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Claude needs input&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; with title &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Claude Code&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; sound name &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Glass&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&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;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;Swap the osascript for a &lt;code&gt;curl&lt;/code&gt; to a Slack webhook or ntfy.sh topic and the alert follows you off the machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; people who want alerts in a specific channel, deterministically.&lt;br&gt;
&lt;strong&gt;The gap:&lt;/strong&gt; per-machine setup, and it alerts without showing state. You still open the terminal to see what the agent wants.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 3: Stay current on permission-prompt fixes
&lt;/h2&gt;

&lt;p&gt;One reason this problem feels worse than it should: for a while, background subagents could be silently blocked by permission prompts that never surfaced, which looked like a hung agent. Since v2.1.186, background subagents surface their permission prompts into the main session, labeled with the subagent's name, and you approve with a keypress.&lt;/p&gt;

&lt;p&gt;If agents seem to hang with no prompt anywhere, update Claude Code before debugging anything else. Several apparent hangs in older versions were exactly this bug.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 4: A desktop dashboard across all your agents
&lt;/h2&gt;

&lt;p&gt;The options above are per-tool and per-terminal. &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt; approaches it from the desktop: it monitors your coding agents across Claude Code, Codex, and Cursor and shows at a glance which are running, which are working, and which are stuck waiting for approval, without you cycling through terminal tabs. Because it also tracks plan usage, "why did my agent stop" has one more answer visible in the same place: sometimes the agent is not waiting for permission, it is waiting for your 5-hour window to reset.&lt;/p&gt;

&lt;p&gt;Blume's broader premise is that interruptions like these are often symptoms of setup problems. An agent that constantly asks for permission usually has a permissions config that does not match how you actually work, and Blume's suggestion engine flags exactly that kind of mismatch (along with rules your agents ignore and hooks that never fire) and proposes fixes you approve or reject.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; multi-agent, multi-project setups.&lt;br&gt;
&lt;strong&gt;The gap:&lt;/strong&gt; if you run one agent in one terminal, the built-ins above are probably enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reduce the prompts instead of just routing them
&lt;/h2&gt;

&lt;p&gt;The best notification is the one that never fires. Three habits shrink the number of approval stops dramatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pre-approve what you always approve.&lt;/strong&gt; If you say yes to &lt;code&gt;npm test&lt;/code&gt; every time, put it in your allowlist in &lt;code&gt;.claude/settings.json&lt;/code&gt;. Every rubber-stamp prompt is pure interruption&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope permissions per project.&lt;/strong&gt; A prototype repo can run permissive; a production repo should not. Checked-in project settings mean the whole team gets the same behavior&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit what the agent actually asks for.&lt;/strong&gt; The prompts you keep approving are a to-do list for your permissions config. This is the kind of setup-versus-behavior mismatch that tooling can watch for you&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I get notifications when Claude Code runs in the background?&lt;/strong&gt;&lt;br&gt;
Yes, if agent view is open or you configure the Notification hook. Otherwise a stopped background session waits silently, which is the trap this post exists to fix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I get alerts on my phone?&lt;/strong&gt;&lt;br&gt;
Yes. Point the Notification hook at a push service like ntfy.sh or a Slack webhook.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does my agent stop even though I approved everything?&lt;/strong&gt;&lt;br&gt;
Check three things in order: an unsurfaced permission prompt (update Claude Code), a hit usage limit (&lt;code&gt;/usage&lt;/code&gt;), or the agent finished and the completion notification went nowhere.&lt;/p&gt;

&lt;p&gt;If you have a notification setup that survives real use, especially for a fleet of parallel agents, share it in the comments.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>devtools</category>
      <category>automation</category>
    </item>
    <item>
      <title>How to Sync Cursor Rules, CLAUDE.md, and AGENTS.md Across Projects Without Config Drift</title>
      <dc:creator>Peder Aaby</dc:creator>
      <pubDate>Wed, 05 Aug 2026 13:48:21 +0000</pubDate>
      <link>https://dev.to/pederaa/how-to-sync-cursor-rules-claudemd-and-agentsmd-across-projects-without-config-drift-23f8</link>
      <guid>https://dev.to/pederaa/how-to-sync-cursor-rules-claudemd-and-agentsmd-across-projects-without-config-drift-23f8</guid>
      <description>&lt;p&gt;If you use Claude Code and Cursor, or you work across more than a handful of repos, you have met config drift: the CLAUDE.md in one project says one thing, the &lt;code&gt;.cursor/rules&lt;/code&gt; in another says something else, and the AGENTS.md you wrote for Codex is three months behind both. Every agent gets a slightly different briefing, so every agent behaves slightly differently, and nobody can say which copy is the truth.&lt;/p&gt;

&lt;p&gt;This post covers the five practical approaches to keeping agent configuration in sync, from zero-dependency symlinks to purpose-built tools.&lt;/p&gt;

&lt;p&gt;Disclosure: I work on &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt;, which appears as one of the five options. The other four are covered on their merits, and for many setups one of them is all you need.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem in one sentence
&lt;/h2&gt;

&lt;p&gt;Every agent invented its own config location: Claude Code reads &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;.claude/&lt;/code&gt; (rules, skills, hooks, settings), Cursor reads &lt;code&gt;.cursor/rules/*.mdc&lt;/code&gt;, Codex reads &lt;code&gt;AGENTS.md&lt;/code&gt;, and Copilot, Gemini CLI, and the rest have their own variants. The knowledge is 90 percent identical, but it lives in N places times M repos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 1: Symlinks (the zero-dependency fix)
&lt;/h2&gt;

&lt;p&gt;Make one file the source of truth and link the rest to it:&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;# AGENTS.md is the master; CLAUDE.md points at it&lt;/span&gt;
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-sf&lt;/span&gt; AGENTS.md CLAUDE.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A popular variant centralizes everything in one &lt;code&gt;.agents/&lt;/code&gt; (or &lt;code&gt;.ai/&lt;/code&gt;) folder in the repo and symlinks each tool's expected path into it. Update the master file and every tool sees the change instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; single repo, cross-tool consistency.&lt;br&gt;
&lt;strong&gt;Limits:&lt;/strong&gt; does nothing across repos, and symlink behavior on Windows can be a headache for mixed teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2: Hard links
&lt;/h2&gt;

&lt;p&gt;Same idea, but the same physical file exists at multiple paths. Some prefer this because every path looks like a real file to tools that resolve symlinks oddly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; the same cases as symlinks, with slightly different edge cases.&lt;br&gt;
&lt;strong&gt;Limits:&lt;/strong&gt; hard links silently break when a tool replaces a file instead of editing it in place, which is exactly what some formatters and generators do. Drift returns without warning, which is worse than obvious drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 3: ai-rules-sync (cross-tool, git-backed)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/lbb00/ai-rules-sync" rel="noopener noreferrer"&gt;ai-rules-sync&lt;/a&gt; manages rules, skills, commands, and subagents in a git repository and syncs them into projects via symlinks. It explicitly supports Cursor, Claude Code, Copilot, OpenCode, Trae, Codex, Gemini CLI, and Warp, which makes it the broadest cross-tool option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; individuals and teams who want one git repo as the canonical rule set across many projects and many tools.&lt;br&gt;
&lt;strong&gt;Limits:&lt;/strong&gt; you are adopting a tool and its conventions; the sync is still file-copy-shaped, so what to sync and when stays a human decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 4: RuleSync (CI-friendly distribution)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.rulesync.dev/" rel="noopener noreferrer"&gt;RuleSync&lt;/a&gt; distributes CLAUDE.md, .cursorrules, and settings files across repos with &lt;code&gt;npx rulesync-cli pull&lt;/code&gt;, and it runs in CI. Adding it to postinstall means every checkout gets current rules automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; teams that want rule distribution to be part of the build, not a manual step.&lt;br&gt;
&lt;strong&gt;Limits:&lt;/strong&gt; pull-based distribution keeps files identical, but it cannot tell you whether the rules themselves are still correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 5: Blume (drift detection, not just distribution)
&lt;/h2&gt;

&lt;p&gt;The four options above all solve copying: making sure the same bytes exist in the right places. &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt; works on the layer above that. It is a desktop app that manages rules, skills, hooks, and the rest of your agent dotfiles centrally across Claude Code, Codex, and Cursor, and then does the part copying cannot: it watches how your agents actually behave, detects when setup and instructions have drifted apart (a rule one agent ignores, configs that contradict each other, a hook that never fires), and proposes fixes you approve or reject.&lt;/p&gt;

&lt;p&gt;Sync tools keep copies identical. Identical copies of a rotten rule set are still rotten, and that second failure mode is the one that quietly degrades agents over months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; multi-agent setups where the config has grown beyond easy manual review.&lt;br&gt;
&lt;strong&gt;Limits:&lt;/strong&gt; it is a desktop app, so if you need headless CI distribution, pair it with option 3 or 4 rather than replacing them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which approach fits you
&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;Start with&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One repo, two tools&lt;/td&gt;
&lt;td&gt;Symlinks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Many repos, one person&lt;/td&gt;
&lt;td&gt;ai-rules-sync&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team, rules must ship with checkout&lt;/td&gt;
&lt;td&gt;RuleSync in postinstall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-agent, config grown past manual review&lt;/td&gt;
&lt;td&gt;Blume, plus symlinks in-repo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These compose. A common stack is AGENTS.md as the in-repo master with symlinks, a git-backed rule repo for cross-project sharing, and something watching for drift on top.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Which file should be the master?&lt;/strong&gt;&lt;br&gt;
AGENTS.md, because most agents now read it natively (Codex, Cursor, Copilot CLI, Gemini CLI, and Claude Code). Keep genuinely Claude-specific instructions in a small CLAUDE.md that defers to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should agent config be committed?&lt;/strong&gt;&lt;br&gt;
Project-level rules, yes: they are institutional knowledge and belong in review. Personal preferences and secrets, no.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I know if my configs have already drifted?&lt;/strong&gt;&lt;br&gt;
Quick check: &lt;code&gt;diff CLAUDE.md AGENTS.md&lt;/code&gt; in any repo where both exist as real files, and compare rule counts across your most-touched repos. If you find contradictions in five minutes of looking, there are more you did not find.&lt;/p&gt;

&lt;p&gt;If you have a sync setup I did not cover, especially for larger teams, drop it in the comments.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>cursor</category>
      <category>devtools</category>
      <category>ai</category>
    </item>
    <item>
      <title>AGENTS.md vs CLAUDE.md: Which Context File Should Your Coding Agents Use in 2026?</title>
      <dc:creator>Peder Aaby</dc:creator>
      <pubDate>Wed, 05 Aug 2026 13:47:55 +0000</pubDate>
      <link>https://dev.to/pederaa/agentsmd-vs-claudemd-which-context-file-should-your-coding-agents-use-in-2026-2ngb</link>
      <guid>https://dev.to/pederaa/agentsmd-vs-claudemd-which-context-file-should-your-coding-agents-use-in-2026-2ngb</guid>
      <description>&lt;p&gt;If you use more than one coding agent, you have probably ended up with a small pile of context files: CLAUDE.md for Claude Code, AGENTS.md for Codex, maybe leftover .cursorrules from an older Cursor setup. They all do the same conceptual job, which is giving the agent a persistent briefing that survives across sessions. The question is which one to maintain in 2026, and the answer is more nuanced than picking a winner.&lt;/p&gt;

&lt;p&gt;Disclosure: I work on &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt;, a desktop app that manages agent configuration across tools. This post stays practical and tool-agnostic; Blume appears once near the end where it is relevant.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AGENTS.md&lt;/strong&gt; is the closest thing to a universal standard. It is recognized by Codex CLI, Copilot CLI, Gemini CLI, Cursor, and Claude Code itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLAUDE.md&lt;/strong&gt; is Claude Code's native file, and it still has capabilities AGENTS.md does not standardize, most notably hierarchical loading and imports.&lt;/li&gt;
&lt;li&gt;If you maintain only one file, make it AGENTS.md. If Claude Code is your primary agent, a two-line setup gives you both.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the two files actually are
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CLAUDE.md&lt;/strong&gt; is project context that Claude Code injects into every conversation. It supports a hierarchy: a global file at &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt;, a project root file, and per-directory files deeper in the tree that load when the agent works in those directories. It also supports importing other files by reference, so a short root file can point to detailed docs without pasting them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AGENTS.md&lt;/strong&gt; is the same idea, standardized across vendors. One markdown file at the repo root that any compliant agent reads on startup. Codex popularized it, and through 2025 and 2026 most major CLIs adopted it, including Claude Code.&lt;/p&gt;

&lt;p&gt;Functionally, both are persistent project context. The difference is tooling compatibility and features around the edges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AGENTS.md wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cross-tool coverage.&lt;/strong&gt; One file, every agent. When a teammate uses Codex and you use Claude Code, AGENTS.md means you are maintaining shared institutional knowledge instead of per-tool copies that drift apart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team standardization.&lt;/strong&gt; It is much easier to get a team to agree on one AGENTS.md than to keep four vendor files in sync. Drift between context files is one of the most common causes of agents behaving differently for different teammates on the same repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Longevity.&lt;/strong&gt; Standards outlive tools. If you switch agents next year, AGENTS.md comes with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where CLAUDE.md wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hierarchy.&lt;/strong&gt; Claude Code loads directory-level CLAUDE.md files as it moves through the tree. A monorepo can have a lean root file plus focused files in &lt;code&gt;apps/web&lt;/code&gt; and &lt;code&gt;packages/api&lt;/code&gt;. AGENTS.md as commonly implemented is a single root file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Imports.&lt;/strong&gt; CLAUDE.md can reference other files and pull them in, which keeps the root file short while making detailed conventions reachable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude-specific instructions.&lt;/strong&gt; Guidance about Claude Code's own features (how to use its hooks, skills, subagents, or compaction behavior) belongs in a Claude-specific file, not in a cross-tool one where other agents will read it as noise.&lt;/p&gt;

&lt;p&gt;One warning from teams who migrated: renaming your CLAUDE.md to AGENTS.md and calling it done leaves performance on the table. The files get read by different models with different instruction-following behavior, and content tuned for one agent does not automatically land the same way with another.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup that gives you both
&lt;/h2&gt;

&lt;p&gt;The pattern that has become standard practice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Put all shared, tool-agnostic project context in &lt;strong&gt;AGENTS.md&lt;/strong&gt;: build commands, architecture overview, conventions, testing rules.&lt;/li&gt;
&lt;li&gt;Make CLAUDE.md defer to it. Either symlink it (&lt;code&gt;ln -sf AGENTS.md CLAUDE.md&lt;/code&gt;) or keep a tiny CLAUDE.md that imports AGENTS.md and adds only Claude-specific instructions below.&lt;/li&gt;
&lt;li&gt;Keep vendor-specific behavior (hooks, skills, model preferences) in each tool's own config, not in the shared file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This way there is exactly one source of truth for project knowledge, and each agent still gets its native extras.&lt;/p&gt;

&lt;h2&gt;
  
  
  The maintenance problem nobody talks about
&lt;/h2&gt;

&lt;p&gt;Whichever file you choose, the failure mode is the same: the file rots. Rules accumulate, some contradict each other, and some are silently ignored because the file grew past what the model reliably follows. Frontier models follow roughly 150 to 200 instructions before compliance starts dropping, and most long-lived context files blow past that without anyone noticing.&lt;/p&gt;

&lt;p&gt;The symptom is subtle: the agent starts making mistakes it did not make three months ago, and nobody connects it to the context file.&lt;/p&gt;

&lt;p&gt;A few ways to catch it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review the file quarterly like you would review CI config&lt;/li&gt;
&lt;li&gt;Delete any rule the agent could infer from reading the code&lt;/li&gt;
&lt;li&gt;Convert rules that must always happen into hooks, which are deterministic, instead of instructions, which are suggestions&lt;/li&gt;
&lt;li&gt;Watch agent behavior for rules that are being ignored, which is a sign the file is too long or contradictory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is tedious to do by hand, and it is the specific problem &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt; automates: it watches how your agents actually behave across Claude Code, Codex, and Cursor, flags instructions your setup contradicts or ignores, and proposes edits you approve or reject. If your CLAUDE.md and AGENTS.md have been growing for a year, an automated second opinion tends to find things.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Claude Code read AGENTS.md natively?&lt;/strong&gt;&lt;br&gt;
Yes. Claude Code recognizes AGENTS.md, so a symlinked or single-file setup works without duplication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should I keep .cursorrules?&lt;/strong&gt;&lt;br&gt;
Cursor has moved to &lt;code&gt;.cursor/rules&lt;/code&gt; and also reads AGENTS.md. Treat legacy .cursorrules files as migration candidates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where do skills fit?&lt;/strong&gt;&lt;br&gt;
Skills (SKILL.md) are task-specific instructions loaded on demand, not persistent context. Keep always-true project facts in AGENTS.md and workflow recipes in skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What goes in neither file?&lt;/strong&gt;&lt;br&gt;
Anything a linter or formatter already enforces, anything derivable from the code in a few minutes of reading, and secrets of any kind.&lt;/p&gt;

&lt;p&gt;If you have strong opinions on the single-file versus hierarchy trade-off, I would like to hear how you handle monorepos in particular.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Track Claude Code Usage in 2026: Built-in Commands, ccusage, and Desktop Dashboards Compared</title>
      <dc:creator>Peder Aaby</dc:creator>
      <pubDate>Wed, 05 Aug 2026 13:42:37 +0000</pubDate>
      <link>https://dev.to/pederaa/how-to-track-claude-code-usage-in-2026-built-in-commands-ccusage-and-desktop-dashboards-compared-1kk1</link>
      <guid>https://dev.to/pederaa/how-to-track-claude-code-usage-in-2026-built-in-commands-ccusage-and-desktop-dashboards-compared-1kk1</guid>
      <description>&lt;p&gt;If you use Claude Code on a Pro or Max plan, you have probably hit the wall mid-session: the 5-hour window runs out, or the weekly cap kicks in, usually right when the agent was in the middle of something important. The fix is not to code less. It is to see your usage before it becomes a problem.&lt;/p&gt;

&lt;p&gt;This post covers every practical way to track Claude Code usage in 2026, from built-in commands to community CLIs to desktop dashboards, and when each one makes sense.&lt;/p&gt;

&lt;p&gt;Disclosure: I work on &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt;, one of the tools covered below. I have tried to keep the comparison factual so you can pick what fits.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fastest check:&lt;/strong&gt; run &lt;code&gt;/usage&lt;/code&gt; inside Claude Code for your current session and weekly limits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API billing:&lt;/strong&gt; run &lt;code&gt;/cost&lt;/code&gt; to see running spend in the current session&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Historical reports in the terminal:&lt;/strong&gt; &lt;code&gt;npx ccusage@latest&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time burn rate and predictions:&lt;/strong&gt; Claude Code Usage Monitor (&lt;code&gt;claude-monitor&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A desktop app that watches all your agents, not just usage:&lt;/strong&gt; Blume&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding what you are actually limited by
&lt;/h2&gt;

&lt;p&gt;Claude Code subscriptions enforce two overlapping limits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A 5-hour rolling window.&lt;/strong&gt; Your usage inside the current window counts against a session budget. When it resets, you get a fresh budget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A weekly cap.&lt;/strong&gt; Heavy use across many sessions draws down a weekly allowance, shared across Claude Code, claude.ai chat, and Cowork.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This matters because the two limits fail differently. The 5-hour window surprises you in the afternoon. The weekly cap surprises you on a Thursday. A good tracking setup makes both visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 1: The built-in commands
&lt;/h2&gt;

&lt;p&gt;Claude Code ships with everything you need for a point-in-time check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/usage&lt;/code&gt; shows your current 5-hour window and weekly usage with reset times (subscription plans)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/cost&lt;/code&gt; shows running API spend for the session (API key users)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/status&lt;/code&gt; shows account and model details&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/context&lt;/code&gt; shows how full your context window is&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is also the Usage dashboard on claude.ai under Settings, which shows the session bar and weekly usage in a browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; quick checks before starting a long session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The gap:&lt;/strong&gt; no history, no trends, no warning before you hit a limit, and nothing at all about what your agents are doing while you are away from the terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2: ccusage, the standard CLI report
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/ccusage/ccusage" rel="noopener noreferrer"&gt;ccusage&lt;/a&gt; is the most widely used community tool. It reads the local JSONL logs that coding agents already write to disk and turns them into cost reports. No account, no telemetry, runs with a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ccusage@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daily, weekly, monthly, and per-session reports with USD cost estimates&lt;/li&gt;
&lt;li&gt;A 5-hour blocks report that maps directly onto Claude's billing windows&lt;/li&gt;
&lt;li&gt;Per-model breakdowns, cache token tracking, and date range filters&lt;/li&gt;
&lt;li&gt;Support for 15+ agent CLIs beyond Claude Code, including Codex, Gemini CLI, and Copilot CLI&lt;/li&gt;
&lt;li&gt;JSON export for piping into your own scripts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; understanding where your tokens went, especially across weeks or months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The gap:&lt;/strong&gt; it is a report, not a monitor. You run it, read it, and close it. It will not tell you that your current session is on pace to hit the limit in 40 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 3: Claude Code Usage Monitor, the real-time view
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor" rel="noopener noreferrer"&gt;Claude Code Usage Monitor&lt;/a&gt; fills exactly that gap. Install it with &lt;code&gt;uv tool install claude-monitor&lt;/code&gt; (or pip/pipx), run &lt;code&gt;claude-monitor&lt;/code&gt;, and you get a live terminal dashboard with progress bars, burn-rate analysis, and predictions about when you will hit your limit.&lt;/p&gt;

&lt;p&gt;Notable features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plan-aware budgets for Pro, Max5, and Max20, plus a P90 auto-detection mode&lt;/li&gt;
&lt;li&gt;Predictive warnings before you run out, based on your current burn rate&lt;/li&gt;
&lt;li&gt;Optional local history warehouse that keeps data beyond Claude's 30-day retention&lt;/li&gt;
&lt;li&gt;JSON/CSV export and a compact single-line mode for status bars&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; heavy users who live inside the 5-hour window and want to pace themselves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The gap:&lt;/strong&gt; it monitors Claude Code subscriptions only, and it monitors usage only. If you also run Codex or Cursor, or you care about what the agents are doing rather than just what they are spending, you need something broader.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 4: Blume, the desktop app for the whole agent setup
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt; approaches the problem from a different angle. Usage tracking is one part of it, but the premise is that usage is a symptom. The underlying question is whether your coding agents are set up correctly at all.&lt;/p&gt;

&lt;p&gt;Blume is a desktop app that sits alongside Claude Code, Codex, and Cursor and gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automatic improvement suggestions.&lt;/strong&gt; Blume watches how your agents actually behave, detects inconsistencies between your setup and your instructions (a CLAUDE.md rule your agent keeps ignoring, a hook that never fires, skills that overlap), and proposes concrete fixes you approve or reject. This is the part the CLI tools do not attempt: it does not just show you the damage, it suggests the repair.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent monitoring.&lt;/strong&gt; See at a glance which agents are running, which are working, and which are stuck waiting for your approval, without cycling through terminal tabs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage tracking&lt;/strong&gt; for Claude Code and Codex plans, so the 5-hour window and weekly cap are visible in one place across tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Config management.&lt;/strong&gt; Rules, skills, hooks, and the growing pile of dotfiles that agents depend on, managed centrally instead of drifting per-project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local storage.&lt;/strong&gt; Conversation history stays on your device.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; anyone running more than one agent, or anyone whose CLAUDE.md and hooks have grown past the point where they can eyeball whether the setup still makes sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The gap:&lt;/strong&gt; it is a desktop app, so if you want something scriptable in CI, ccusage's JSON export is the better fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison table
&lt;/h2&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;Built-in commands&lt;/th&gt;
&lt;th&gt;ccusage&lt;/th&gt;
&lt;th&gt;Usage Monitor&lt;/th&gt;
&lt;th&gt;Blume&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Interface&lt;/td&gt;
&lt;td&gt;In-session&lt;/td&gt;
&lt;td&gt;CLI report&lt;/td&gt;
&lt;td&gt;Live terminal UI&lt;/td&gt;
&lt;td&gt;Desktop app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time warnings&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Historical reports&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (opt-in)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tools covered&lt;/td&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;15+ agent CLIs&lt;/td&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;Claude Code, Codex, Cursor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shows what agents are doing&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Suggests setup fixes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scriptable output&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;JSON&lt;/td&gt;
&lt;td&gt;JSON/CSV&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;td&gt;Included&lt;/td&gt;
&lt;td&gt;Free, OSS&lt;/td&gt;
&lt;td&gt;Free, OSS&lt;/td&gt;
&lt;td&gt;Free to start&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Which one should you use?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You hit limits occasionally:&lt;/strong&gt; the built-in &lt;code&gt;/usage&lt;/code&gt; command is enough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You want to understand a month of spending:&lt;/strong&gt; ccusage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You are rationing a Max plan hour by hour:&lt;/strong&gt; Claude Code Usage Monitor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You run multiple agents, or you suspect your agent config is quietly working against you:&lt;/strong&gt; Blume.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not mutually exclusive. A common stack is &lt;code&gt;/usage&lt;/code&gt; for quick checks, ccusage in a monthly review, and a desktop app running in the background for everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Claude Code share limits with claude.ai chat?&lt;/strong&gt;&lt;br&gt;
Yes. Subscription usage draws from one pool across Claude Code, claude.ai, and Cowork. A heavy chat session eats into your coding budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I see when my limit resets?&lt;/strong&gt;&lt;br&gt;
Run &lt;code&gt;/usage&lt;/code&gt; in Claude Code, or check Settings &amp;gt; Usage on claude.ai. Both show reset times for the 5-hour window and the weekly cap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do these tools send my data anywhere?&lt;/strong&gt;&lt;br&gt;
ccusage and Claude Code Usage Monitor read local log files and run entirely on your machine. Blume stores conversation history locally on your device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What about tracking Codex or Cursor usage too?&lt;/strong&gt;&lt;br&gt;
ccusage covers many agent CLIs for cost reports. Blume tracks Claude Code and Codex plan usage and monitors agent activity across Claude Code, Codex, and Cursor.&lt;/p&gt;

&lt;p&gt;If you have a tracking setup that works well for you, I would genuinely like to hear about it in the comments, especially if you are juggling more than one agent.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
