<?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>I built Blume: it turns your coding-agent corrections into rules</title>
      <dc:creator>Peder Aaby</dc:creator>
      <pubDate>Mon, 07 Sep 2026 09:59:46 +0000</pubDate>
      <link>https://dev.to/pederaa/i-built-blume-it-turns-your-coding-agent-corrections-into-rules-3oa5</link>
      <guid>https://dev.to/pederaa/i-built-blume-it-turns-your-coding-agent-corrections-into-rules-3oa5</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsz199podl62oto8sh0es.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsz199podl62oto8sh0es.png" alt="Codex, two Claude Code terminals, and the Blume window showing which sessions are finished, running, or idle" width="800" height="502"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Two Claude Code terminals and a Codex session, with Blume on the right tracking all three.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every coding agent session ends the same way for me. Somewhere in the middle I typed "no, we use the repository pattern here", or "stop adding console.logs", or just "why did you do that again". The agent fixed it, the session ended, and the next session started from zero. I typed the same correction the next day.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt; is a desktop app that watches those sessions locally and turns the corrections you keep repeating into rules, hooks, and skills for your agent. It works with Claude Code, Codex, and Cursor. It is free, runs on macOS, Linux, and Windows, and nothing leaves your machine.&lt;/p&gt;

&lt;p&gt;We launched it on &lt;a href="https://www.producthunt.com/products/blume-codes" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt; this week. This post is the longer version of the launch comment, plus the questions people asked there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: agent drift
&lt;/h2&gt;

&lt;p&gt;At my previous startup we shipped fast with agents and paid for it later. Duplicated functions that did the same thing with different names. Three ways of handling errors in one service. Architecture decisions that held for a week until an agent in a fresh session did not know about them. Bugs in production that traced back to the agent not knowing a rule a human had explained five times in chat.&lt;/p&gt;

&lt;p&gt;The usual fix is to maintain your CLAUDE.md, AGENTS.md, or Cursor rules by hand. Boris Cherny, who created Claude Code, gives the advice directly: every time Claude makes a mistake, do not tell it to do it differently, tell it to write the fix into CLAUDE.md. That is good advice and almost nobody follows it consistently, because it is a chore that competes with the actual work.&lt;/p&gt;

&lt;p&gt;We tried two things before Blume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual maintenance.&lt;/strong&gt; Someone owns the rules file and updates it after reviews. It works for about two weeks. Then the file goes stale, people stop trusting it, and the corrections move back into chat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automating it naively.&lt;/strong&gt; Have the agent append a rule every time it gets corrected. This produces a context file that grows without bound, full of one-off instructions that contradict each other, and the agent gets worse because its context is now mostly noise. Context bloat is a real cost: a long CLAUDE.md is slower, more expensive, and less likely to be followed.&lt;/p&gt;

&lt;p&gt;Neither approach answers the real question: which corrections are signal?&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea: extract intent from the sessions themselves
&lt;/h2&gt;

&lt;p&gt;Your sessions already contain the answer. If you have corrected the same thing five times across three weeks, that is a rule. If you corrected it once and moved on, it is not. The information about what matters is in the pattern, not in any single message.&lt;/p&gt;

&lt;p&gt;So Blume reads the session history that your agent already stores on disk, and looks for three kinds of signal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Corrections.&lt;/strong&gt; "No, not like that." "Use X instead of Y." A direct reversal of something the agent did.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frustration.&lt;/strong&gt; Short, repeated, escalating messages. High token spend on something that should have been simple. The "why did you do that again" moments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nudges.&lt;/strong&gt; Softer steering that is not a correction but shows up over and over. "Remember to run the tests." "Check the types."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It clusters these by theme. When a cluster crosses a threshold, Blume proposes a concrete change: a rule for your context file, a hook that runs automatically, or a skill that packages a workflow you keep re-explaining. You read the proposal, and you approve or reject it. Nothing is written to your config without you saying yes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the thresholds are
&lt;/h2&gt;

&lt;p&gt;This was the first question on Product Hunt, and it is the right one. Taissa asked how we avoid one-off feedback getting hardened into a permanent rule too early.&lt;/p&gt;

&lt;p&gt;The thresholds are deliberately conservative:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Five occurrences&lt;/strong&gt; in the same thematic cluster, or&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two occurrences&lt;/strong&gt; that Blume classifies as pain, meaning they came with frustration signals or unusually high token usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything below that stays as an observation you can look at, not a suggestion. The goal is that a suggestion, when it appears, is one you would nod at rather than one you have to think hard about.&lt;/p&gt;

&lt;p&gt;Nivy asked a version of the same thing more bluntly: how does it tell a genuine issue from me being annoyed at 11pm? The honest answer is that it does not try to read your mood in any single message. It waits for recurrence. One bad night is one data point. The same bad night three times is a rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like day to day
&lt;/h2&gt;

&lt;p&gt;Blume sits in the background as a desktop app. The main screen shows every agent session on your machine and whether it is working, finished, or waiting for your approval, so you can run several sessions without watching terminals.&lt;/p&gt;

&lt;p&gt;Behind that, it maps the hidden files that shape agent behavior: rules, skills, hooks, and the context files spread across your projects. Most people I have shown this to did not know how many of those files they had, or which ones were still being read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewyaz269mixnwtdmyex8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewyaz269mixnwtdmyex8.png" alt="The Blume Setup tab listing recent projects and global artifacts such as CLAUDE.md and MCP servers" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The Setup tab: every CLAUDE.md, skill, hook, and MCP server that shapes your agents, across harnesses and projects.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then there are the suggestions. Each one shows the cluster of session moments that produced it, so you can see the evidence, and the proposed rule or hook. Approve, edit, or dismiss.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1cx4lh5wyjhku4va1f8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1cx4lh5wyjhku4va1f8y.png" alt="The Blume Improve tab with correction, steering, and frustration gauges and two suggestions: a verification rule and a release-checklist skill" width="799" height="592"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The Improve tab: analytics on how often you correct or steer your agents, and the suggestions those patterns produced.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It also tracks Claude Code and Codex plan usage so you see the weekly limit coming, but that is the least interesting part to me. The point is that your agent setup gets better without you maintaining it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does not do
&lt;/h2&gt;

&lt;p&gt;I would rather say this here than have you find out after installing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It is a desktop app, not a CLI.&lt;/strong&gt; If you want something scriptable for CI, this is not it. Tools like ccusage are better for usage numbers in a terminal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It needs sessions to learn from.&lt;/strong&gt; On a brand new project with no history it has nothing to say. It gets useful after a week or two of real work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you already keep a tight, hand-tuned CLAUDE.md&lt;/strong&gt; and you are the only person on the project, you may not need it. The pain it solves scales with the number of sessions, people, and agents touching a codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics on whether your setup is improving over time&lt;/strong&gt; is still in progress. The suggestions work today. The trend view is next.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Privacy
&lt;/h2&gt;

&lt;p&gt;All processing happens on your machine. Blume reads the session files your agent already writes locally, and does not send your code or your chats anywhere. That was a constraint from day one because the sessions contain everything: proprietary code, half-formed ideas, and the occasional swearing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want from you
&lt;/h2&gt;

&lt;p&gt;Blume is free. If you run Claude Code, Codex, or Cursor daily, I would like to know two things after a week of use:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Did the first suggestion match something you actually wanted, or did it feel off? That tells us whether the thresholds are tuned right for your style.&lt;/li&gt;
&lt;li&gt;What did you correct this week that Blume did not catch?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Download is at &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;blume.codes&lt;/a&gt;. The Product Hunt thread is still open if you would rather ask there, and I answer everything.&lt;/p&gt;

&lt;p&gt;Peder&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>claudecode</category>
      <category>ai</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Claude Code's Weekly Limit, Explained (and How to See It Coming)</title>
      <dc:creator>Peder Aaby</dc:creator>
      <pubDate>Fri, 07 Aug 2026 11:23:49 +0000</pubDate>
      <link>https://dev.to/pederaa/claude-codes-weekly-limit-explained-and-how-to-see-it-coming-4a59</link>
      <guid>https://dev.to/pederaa/claude-codes-weekly-limit-explained-and-how-to-see-it-coming-4a59</guid>
      <description>&lt;p&gt;The 5-hour limit is annoying. The weekly limit is the one that actually ruins your week: you wait out the usual break, come back, and you are still locked out, sometimes for days. This post explains how the weekly limit actually works, how to tell which limit you hit, why your usage drains faster than your activity suggests, and every way to see it coming before it lands.&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 mentioned in the tools section. Everything else here comes from Anthropic's documentation and the built-in commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two limits, in one minute
&lt;/h2&gt;

&lt;p&gt;Claude Code subscriptions (Pro, Max, Team, Enterprise) enforce two overlapping windows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A rolling 5-hour window.&lt;/strong&gt; Limits the pace of your usage. Wait, and it comes back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A weekly window.&lt;/strong&gt; Caps your total volume. When this one is gone, waiting an hour does nothing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Two details cause most of the confusion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The pool is shared across products.&lt;/strong&gt; Claude Code, claude.ai chat, and Cowork all draw from the same allowance. A long brainstorming session in the web chat eats the same budget your coding sessions use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It is shared across models too.&lt;/strong&gt; Switching from Opus to Sonnet with &lt;code&gt;/model&lt;/code&gt; keeps you working after an Opus-specific limit message, but it does not restore access once you have hit the overall session or weekly limit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Which limit did I hit?
&lt;/h2&gt;

&lt;p&gt;The error message tells you: "You've hit your session limit" is the 5-hour window, "You've hit your weekly limit" is the weekly cap. Both show when the window resets. The practical test, if you missed the message: if a short break restores access, it was the 5-hour window. If you stay blocked no matter how long you wait, it was the weekly cap.&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;/usage&lt;/code&gt; at any time to see both bars, your reset times, and activity stats. On claude.ai, Settings &amp;gt; Usage shows the same thing in a browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the weekly limit drains faster than you expect
&lt;/h2&gt;

&lt;p&gt;This is the part most guides skip, and it is where the budget actually goes. Claude Code sends your full conversation with every request, so context size, not message count, drives consumption. Anthropic's own docs list the main culprits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Long-lived sessions.&lt;/strong&gt; A one-line question in a session that has been open all day still carries the whole conversation. Prompt caching makes re-reads cheaper, but they are not free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache misses after breaks.&lt;/strong&gt; On a subscription, the prompt cache lives for about an hour. Come back from lunch and your first message reprocesses the full context at normal rates. (Once you are drawing on usage credits, the cache lifetime drops to five minutes.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compaction.&lt;/strong&gt; &lt;code&gt;/compact&lt;/code&gt; reads everything it summarizes, so compacting a huge context is itself a huge request. &lt;code&gt;/clear&lt;/code&gt; costs nothing, so prefer it when you do not need continuity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scheduled tasks and agent teammates.&lt;/strong&gt; Anything that fires on an interval, or any parallel teammate you forgot to shut down, keeps drawing from the pool while you are not looking. Agent teams can use roughly 7x the tokens of a normal session.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The newer builds of Claude Code surface this directly: the &lt;code&gt;/usage&lt;/code&gt; breakdown now attributes recent usage to skills, subagents, plugins, and individual MCP servers, and flags behaviors like long context or cache misses when one accounts for 10 percent or more of your recent usage. Press &lt;code&gt;d&lt;/code&gt; or &lt;code&gt;w&lt;/code&gt; to toggle between the last 24 hours and the last 7 days. If you have not looked at this screen since it shipped, it answers "where did my week go" better than any external tool used to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Seeing it coming: the tooling options
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Built-in:&lt;/strong&gt; &lt;code&gt;/usage&lt;/code&gt; for the bars and the attribution breakdown, &lt;code&gt;/context&lt;/code&gt; for how full the current session is, and a &lt;a href="https://code.claude.com/docs/en/statusline" rel="noopener noreferrer"&gt;status line&lt;/a&gt; if you want context usage always visible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI reports:&lt;/strong&gt; &lt;a href="https://github.com/ccusage/ccusage" rel="noopener noreferrer"&gt;ccusage&lt;/a&gt; reads your local session logs and produces daily, weekly, and 5-hour-block reports, useful for understanding patterns across weeks. &lt;a href="https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor" rel="noopener noreferrer"&gt;Claude Code Usage Monitor&lt;/a&gt; gives you a live terminal view with burn-rate predictions for the current window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Desktop:&lt;/strong&gt; &lt;a href="https://blume.codes" rel="noopener noreferrer"&gt;Blume&lt;/a&gt; shows plan usage for Claude Code and Codex side by side, next to a live view of what every agent is doing (working, finished, or waiting on approval). The angle is different from the CLI tools: usage spikes are often a symptom of setup problems, like an agent stuck re-reading files because its instructions are unclear, and Blume also tracks the rules, skills, and hooks steering each agent, with automatic mismatch detection on its roadmap. If you only run Claude Code in one terminal, the built-ins plus ccusage cover you; Blume earns its place when several agents share your weekly budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do when you hit the wall
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Usage credits.&lt;/strong&gt; Paid plans can now continue past the limit with &lt;a href="https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans" rel="noopener noreferrer"&gt;usage credits&lt;/a&gt;: run &lt;code&gt;/usage-credits&lt;/code&gt; to set it up. Older "you just have to wait" advice predates this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make the budget go further.&lt;/strong&gt; Clear between unrelated tasks, resume big sessions from a summary instead of the full history, use Sonnet for routine work and save Opus for the hard problems, lower the thinking effort for simple tasks, and move rarely-used instructions out of CLAUDE.md into skills that load on demand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the breakdown before changing habits.&lt;/strong&gt; If &lt;code&gt;/usage&lt;/code&gt; says one MCP server or a cache-miss pattern accounts for a third of your consumption, fix that first. One config change can be worth more than a week of careful prompting.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Does claude.ai chat count against my Claude Code weekly limit?&lt;/strong&gt;&lt;br&gt;
Yes. Pro and Max usage is one pool shared across Claude Code, claude.ai, and Cowork.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When exactly does my weekly limit reset?&lt;/strong&gt;&lt;br&gt;
The limit message and &lt;code&gt;/usage&lt;/code&gt; both show your reset time. Do not rely on blog posts for this one: third-party write-ups disagree about the reset mechanics, and your own &lt;code&gt;/usage&lt;/code&gt; screen is authoritative for your account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does switching models restore access?&lt;/strong&gt;&lt;br&gt;
No. Session and weekly limits are shared across all models. Switching only helps with model-specific messages like the Opus limit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I pay to keep working?&lt;/strong&gt;&lt;br&gt;
Yes, with usage credits on paid plans, or by using an API key with pay-as-you-go billing, which has no weekly cap but bills per token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do background processes really use my quota?&lt;/strong&gt;&lt;br&gt;
A little. Conversation summarization and some status commands consume small amounts (typically under $0.04 per session), but scheduled tasks and idle agent teammates can consume a lot more.&lt;/p&gt;

&lt;p&gt;If your weekly limit keeps surprising you, the &lt;code&gt;/usage&lt;/code&gt; attribution screen is the first thing to check. And if you have found a consumption pattern that surprised you, share it in the comments: the failure modes are more varied than the docs suggest.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <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>
