<?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: Dennis Pilarinos</title>
    <description>The latest articles on DEV Community by Dennis Pilarinos (@dennis_pilarinos).</description>
    <link>https://dev.to/dennis_pilarinos</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%2F4061678%2F639a8386-d7d3-4b6c-9680-ecdcd9363303.png</url>
      <title>DEV Community: Dennis Pilarinos</title>
      <link>https://dev.to/dennis_pilarinos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dennis_pilarinos"/>
    <language>en</language>
    <item>
      <title>One Instructions File to Rule Your Agent: What AGENTS.md and CLAUDE.md Can and Can't Fix</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Mon, 24 Aug 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/one-instructions-file-to-rule-your-agent-what-agentsmd-and-claudemd-can-and-cant-fix-4fke</link>
      <guid>https://dev.to/dennis_pilarinos/one-instructions-file-to-rule-your-agent-what-agentsmd-and-claudemd-can-and-cant-fix-4fke</guid>
      <description>&lt;p&gt;Fabien Sanglard's &lt;a href="https://fabiensanglard.net/agent.md/index.html" rel="noopener noreferrer"&gt;"My agent.md to improve LLM-assisted code quality"&lt;/a&gt; spent the weekend parked on the &lt;a href="https://news.ycombinator.com/item?id=49410932" rel="noopener noreferrer"&gt;Hacker News front page&lt;/a&gt;: 325 points, 138 comments, and a thread full of engineers trading rule files like recipes. One tab over, GitHub's trending chart belongs to &lt;a href="https://github.com/multica-ai/andrej-karpathy-skills" rel="noopener noreferrer"&gt;andrej-karpathy-skills&lt;/a&gt;, a repo built around a single CLAUDE.md distilling Andrej Karpathy's public observations about LLM coding pitfalls; it's sitting at roughly 206,000 stars, and Karpathy didn't even write it (more on that below). If you wanted proof that the single-file agent instructions pattern owns the current discourse, this was the week.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In brief: A markdown file at your repo root is the cheapest, most portable way to teach a coding agent your conventions, and this week's 325-point thread and 206k-star repo show how much demand there is for exactly that. But the pattern has a structural ceiling: files rot as conventions change, contradictions get resolved arbitrarily, and static text can't describe a moving system. Keep the file for stable rules. Retrieve everything else at runtime.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why is everyone shipping a single instructions file?
&lt;/h2&gt;

&lt;p&gt;Because every vendor finally agreed to read one. AGENTS.md, the open format now stewarded by the Linux Foundation's Agentic AI Foundation, is consumed by OpenAI Codex, Cursor, GitHub Copilot, Google Jules, Zed, Aider, and a long tail of others, with &lt;a href="https://agents.md/" rel="noopener noreferrer"&gt;over 60,000 open-source projects&lt;/a&gt; already carrying the file. &lt;a href="https://docs.github.com/en/copilot/how-tos/custom-instructions/adding-repository-custom-instructions-for-github-copilot" rel="noopener noreferrer"&gt;Copilot picks it up anywhere in your repo&lt;/a&gt;, plus CLAUDE.md or GEMINI.md at the root. Claude Code reads CLAUDE.md and documents a one-line &lt;code&gt;@AGENTS.md&lt;/code&gt; import so both tools share a source. We've mapped the format differences in &lt;a href="https://getunblocked.com/blog/claude-md-vs-agents-md-vs-cursor-rules/" rel="noopener noreferrer"&gt;CLAUDE.md vs AGENTS.md vs Cursor rules&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The demand side is just as loud. Sanglard describes the itch precisely: he kept typing the same corrections into every session ("don't use magic numbers," "keep function names short") until he wrote them down once. And the star velocity on the Karpathy-derived repo, which packages four behavioral principles a community developer extracted from Karpathy's January post on X (Karpathy has no affiliation with the repo), says a few hundred thousand people share that itch. The repo's four principles (think before coding, simplicity first, surgical changes, goal-driven execution) fit in 65 lines, which is arguably the whole point: the pattern's pitch is that 65 well-chosen lines beat any amount of scaffolding.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the pattern actually get right?
&lt;/h2&gt;

&lt;p&gt;More than the skeptics admit. A single agent instructions file is portable across tools, versioned with your code, reviewable in a pull request, and needs zero infrastructure. That last property is quietly radical: your agent's operating guidance gets the same diff-and-review treatment as the code it governs, instead of living in chat history and tribal memory.&lt;/p&gt;

&lt;p&gt;There's evidence it helps, though it's thinner than the star counts suggest. A &lt;a href="https://arxiv.org/abs/2602.11988" rel="noopener noreferrer"&gt;February 2026 arXiv study&lt;/a&gt; across four agent-model pairings found that developer-written context files nudged task success up by about 2.4% on average, a lift that fell short of statistical significance, and it confirmed that agents follow the instructions inside them closely. The authors' own conclusion lands where the practitioners have: these files earn their keep by specifying non-standard practices, not by boosting raw performance. And notice what Sanglard's rules and the Karpathy principles have in common: they're stable preferences. "Always use braces," "extract magic numbers," "make surgical changes" will be just as true next quarter. That's the sweet spot. Sanglard's own arc is instructive here: his mid-2025 attempts at LLM-assisted work produced code that didn't compile, while by 2026 the models could implement an indexed binary heap and pinpoint an obscure bug, yet still emitted what he calls spaghetti until the rules file reined in the style. His verdict is appropriately unsentimental: "LLMs constantly hallucinate and cannot be trusted." The file doesn't fix that. It just makes the review cheaper by making the output predictable.&lt;/p&gt;

&lt;p&gt;The craft guidance is converging too. &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;Claude's docs recommend staying under 200 lines&lt;/a&gt;, Copilot's docs advise keeping instructions under two pages, &lt;a href="https://learn.chatgpt.com/docs/agent-configuration/agents-md" rel="noopener noreferrer"&gt;Codex caps combined size at 32 KiB by default&lt;/a&gt;, and &lt;a href="https://cursor.com/docs/context/rules" rel="noopener noreferrer"&gt;Cursor suggests keeping rules under 500 lines&lt;/a&gt;. Short files get followed; sprawling ones get skimmed. If yours has sprawled, here's &lt;a href="https://getunblocked.com/blog/audit-fix-bloated-claude-md/" rel="noopener noreferrer"&gt;how to audit and fix a bloated CLAUDE.md&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does one file hit its ceiling?
&lt;/h2&gt;

&lt;p&gt;The same place every static artifact does: the moment reality moves. Your team migrates test frameworks, renames a service, or reverses an architectural decision, and the file keeps confidently asserting the old world. Nobody gets paged when it drifts. We've traced that failure mode in &lt;a href="https://getunblocked.com/blog/rules-file-rot/" rel="noopener noreferrer"&gt;rules file rot&lt;/a&gt; and in &lt;a href="https://getunblocked.com/blog/keep-agent-instructions-up-to-date/" rel="noopener noreferrer"&gt;keeping agent instructions up to date&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Contradictions are worse, because they fail silently. Claude's own memory documentation is blunt: "if two rules contradict each other, Claude may pick one arbitrarily." Copilot's docs likewise warn against "conflicting sets of instructions." There's no compiler for your rules, no error, no lint. You find out when the agent does the wrong thing convincingly.&lt;/p&gt;

&lt;p&gt;Then there's scale. One file per repo, times fifty repos, times three formats, is a synchronization problem masquerading as a documentation pattern; we've covered &lt;a href="https://getunblocked.com/blog/keeping-claude-md-agents-md-cursorrules-in-sync/" rel="noopener noreferrer"&gt;keeping CLAUDE.md, AGENTS.md, and .cursorrules in sync&lt;/a&gt;. The same arXiv study found LLM-generated instruction files made agents slightly worse in most of its test settings, and every kind of context file inflated inference cost by over 20% on average. Commenters on Sanglard's thread pushed further: plenty of these files are fossilized workarounds for model behaviors that no longer exist. Two more threads of skepticism from the discussion are worth stealing. First, anything a linter can enforce should live in the linter, where compliance is deterministic instead of probabilistic; the file should hold what tooling can't check. Second, frontier models need far less procedural coaching than their 2024 ancestors did, so a rule that made sense two model generations ago may now be pure context tax. Both arguments point the same direction: the file's honest scope keeps shrinking toward judgment calls only your team can make.&lt;/p&gt;

&lt;h2&gt;
  
  
  What belongs in the file, and what gets retrieved at runtime?
&lt;/h2&gt;

&lt;p&gt;Split by rate of change. Stable and repo-scoped earns a line in the file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build, test, and lint commands, and the order to run them&lt;/li&gt;
&lt;li&gt;Naming conventions, layering rules, and style calls your tooling can't enforce&lt;/li&gt;
&lt;li&gt;The always/never list: approval workflows, forbidden directories, deployment rules&lt;/li&gt;
&lt;li&gt;Pointers to deeper docs the agent should read before touching sensitive areas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything that changes weekly stays out. What shipped yesterday, what's in flight on a neighboring branch, what the ticket actually asks for, what that Slack thread decided at 4pm: none of it can live in a static file, because the file was true when it was committed and the work is happening now. This is the part of the pattern nobody's markdown template solves, and it's why teams that stop at the file keep watching their agent make confident, well-formatted mistakes.&lt;/p&gt;

&lt;p&gt;That second half is what a context engine is for. Unblocked connects your repos, issue trackers, Slack, and docs so the agent queries current institutional context instead of trusting a snapshot; &lt;a href="https://getunblocked.com/blog/rules-files-vs-context-engine/" rel="noopener noreferrer"&gt;rules files vs a context engine&lt;/a&gt; walks through the architecture, and &lt;a href="https://getunblocked.com/blog/why-not-just-claude-code/" rel="noopener noreferrer"&gt;why not just Claude Code&lt;/a&gt; covers where the built-in memory stops. It's the difference between handing your agent a laminated card and giving it someone to ask.&lt;/p&gt;

&lt;p&gt;Here's what that looks like in practice, from an engineer at Clio:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I built a step called 'enrich' that runs before any code gets written. The agent asks Unblocked for everything — the ticket, the Slack context, what's been done in related repos — and then it starts implementing. It's especially powerful for cross-repository work where you'd otherwise have to do all that archaeology yourself."&lt;/p&gt;

&lt;p&gt;— Arthur Rodolfo, Software Engineer, Clio&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The file tells the agent how your team writes code. Retrieval tells it what's actually going on, which is the job of &lt;a href="https://getunblocked.com/blog/claude-code-institutional-memory/" rel="noopener noreferrer"&gt;institutional memory&lt;/a&gt; and a shared &lt;a href="https://getunblocked.com/blog/team-memory-hubs-ai-agents/" rel="noopener noreferrer"&gt;team memory hub&lt;/a&gt;, not a markdown snapshot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Should I write AGENTS.md or CLAUDE.md?
&lt;/h3&gt;

&lt;p&gt;Write AGENTS.md and bridge from there. It's the vendor-neutral format with the widest support, and tools that prefer their own filename can consume it: Claude Code documents a one-line &lt;code&gt;@AGENTS.md&lt;/code&gt; import (or a plain symlink), and Copilot reads the shared file natively. Maintaining parallel hand-edited copies is exactly how instruction files drift apart, so pick one canonical file and generate or import the rest. Monorepos get nesting for free: Codex walks from the git root down and lets closer files override earlier guidance, and Cursor combines nested files with the more specific instructions taking precedence, so per-service rules can live next to the service.&lt;/p&gt;

&lt;h3&gt;
  
  
  How long should an agent instructions file be?
&lt;/h3&gt;

&lt;p&gt;Shorter than the one you have. The vendors are unusually aligned here: under 200 lines (Claude), two pages (Copilot), 32 KiB combined (Codex), under 500 lines (Cursor). Adherence drops as length grows, because instructions compete with your actual task for attention. A useful habit: every time you add a rule, delete or verify one. Treat the file like an API surface, not an append-only log.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do these files measurably improve agent output?
&lt;/h3&gt;

&lt;p&gt;Barely, and only when humans write them. The arXiv evaluation found a 2.4% average lift from developer-written files that didn't reach statistical significance, a small negative effect from LLM-generated ones, and wide variance by model; Claude Sonnet 4.5 actually scored slightly worse with them while a smaller open model gained nearly eight points. The study's headline is blunter: context files don't generally improve success rates, and they add over 20% to inference cost. Benchmarks don't capture everything (consistency, review burden, avoided rework), but the data supports writing a small, deliberate file rather than generating a big one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The file you should still write
&lt;/h2&gt;

&lt;p&gt;Write the file. Keep it under a couple hundred lines, limit it to rules that were true last quarter and will be true next quarter, version it, and prune it on a schedule. Treat contradictions as bugs, because your agent will resolve them by coin flip, and treat every rule a linter could enforce as a rule that belongs in the linter. The pattern earned its moment on the front page honestly: cheap, portable, reviewable guidance beats re-typing corrections into a chat box forever, and the research agrees with the narrow version of the pitch, a file that encodes your non-standard practices, even if it won't move a benchmark.&lt;/p&gt;

&lt;p&gt;Just don't ask a markdown file to be your team's memory. It's the stable layer of a two-layer system, and the dynamic layer, the tickets and threads and cross-repo history your agent needs mid-task, belongs to retrieval from a &lt;a href="https://getunblocked.com/blog/coding-agent-source-of-truth/" rel="noopener noreferrer"&gt;single source of truth&lt;/a&gt; that updates when your team does. One file to rule your agent's style. A context engine for everything the file can't know.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
    <item>
      <title>What 194 Engineering Teams Told Us About Their Homegrown Context Stacks</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Fri, 21 Aug 2026 09:30:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/what-194-engineering-teams-told-us-about-their-homegrown-context-stacks-5c1b</link>
      <guid>https://dev.to/dennis_pilarinos/what-194-engineering-teams-told-us-about-their-homegrown-context-stacks-5c1b</guid>
      <description>&lt;p&gt;Just over 4 in 10 of the engineering organizations we spoke with this year had already built, or were actively building, their own homegrown context stack: an internal system for feeding organizational knowledge to AI agents. Count the lighter improvisations too, the rules-file fleets and per-team MCP patchworks, and roughly 6 in 10 had rolled some form of their own. Almost none of them planned it as a product. It started as a hack that worked, and they were talking to us because it had stopped working.&lt;/p&gt;

&lt;p&gt;That is the headline from 194 conversations we held with engineering teams evaluating context tooling between May and August 2026. This post is the aggregate: what the stacks look like, the lifecycle they follow, the five failure modes that recur with measurable regularity, and what teams said they wanted instead. Full methodology, including the selection bias you should apply to every number, is at the bottom.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Just over 4 in 10 of the roughly 150 organizations behind our 194 conversations had built or were building a substantive internal context system; about 6 in 10 had built something DIY, however small.&lt;/li&gt;
&lt;li&gt;The dominant shapes: internal RAG over a wiki, vector databases over docs, Slack answer bots, custom centralized MCP servers, CLAUDE.md fleets, and per-team MCP patchworks.&lt;/li&gt;
&lt;li&gt;The lifecycle is consistent enough to predict: build, early success, a staleness and maintenance wall, then an evaluation of alternatives. Roughly three in four builders described this arc.&lt;/li&gt;
&lt;li&gt;Five failure modes recur: staleness with no owner (more than 4 in 10), token waste (roughly 4 in 10), no conflict resolution between sources (about a third), MCP and tool sprawl (about a third), and dedicated maintenance cost (about 3 in 10).&lt;/li&gt;
&lt;li&gt;What teams asked for instead: permission inheritance, automatic freshness, one integration point, source authority that decides which truth wins, and measurable proof it works.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How many teams actually build their own context stack?
&lt;/h2&gt;

&lt;p&gt;We counted an organization as a builder only if it had constructed something substantive: an internal retrieval system, a knowledge graph, a centralized context service, an answer bot with its own ingestion pipeline. By that stricter bar, just over 4 in 10 organizations qualified. These were not weekend experiments; several had dedicated squads assigned to the problem, and one large enterprise had recently rolled out an in-house context solution company-wide and was surveying the vendor market anyway.&lt;/p&gt;

&lt;p&gt;Widen the definition to any deliberate DIY context mechanism, &lt;a href="https://getunblocked.com/blog/rules-files-vs-context-engine/" rel="noopener noreferrer"&gt;rules files replicated across repositories&lt;/a&gt;, individually maintained MCP configurations, a bot that answers questions in chat, and the share climbs to roughly 6 in 10. The instinct to build is close to universal; what varies is how far teams get before the economics assert themselves.&lt;/p&gt;

&lt;p&gt;Two findings surprised us. Building was not correlated with company size: solo founders and organizations with tens of thousands of engineers both built, though large enterprises often had several parallel homegrown efforts that did not know about each other. And explicit refusal to build was rare but articulate; the teams that declined said, in effect, we do not want to build and manage this ourselves. Most teams learn that the slower way. The wider backdrop makes the volume unsurprising: in Deloitte's mid-2026 survey of 501 senior leaders, &lt;a href="https://www.prnewswire.com/news-releases/ai-agents-are-only-the-beginning-deloitte-survey-examines-the-ai-readiness-gap-and-reveals-how-enterprises-can-prepare-for-agentic-success-302848848.html" rel="noopener noreferrer"&gt;42% of organizations had tested or deployed AI agents while only 15% had scaled an orchestrated agentic rollout&lt;/a&gt;, and a homegrown context stack is very often the artifact of a team trying to cross that gap alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do homegrown context stacks look like?
&lt;/h2&gt;

&lt;p&gt;The taxonomy was remarkably stable across industries, from fintech to healthcare to gaming. Five shapes cover nearly everything we heard.&lt;/p&gt;

&lt;h3&gt;
  
  
  RAG over the wiki
&lt;/h3&gt;

&lt;p&gt;The most common substantive build: chunk the internal docs, embed them into a vector database, retrieve per query. It is the textbook architecture, and it inherits &lt;a href="https://ragaboutit.com/7-rag-failure-modes-crippling-enterprise-deployments-in-2026/" rel="noopener noreferrer"&gt;the textbook failure modes&lt;/a&gt; of temporal drift and entity confusion across chunks, plus a failure the textbook rarely names: no notion of authority. A handful of teams had layered knowledge graphs on top, usually after discovering that similarity search cannot distinguish current truth from well-written history.&lt;/p&gt;

&lt;h3&gt;
  
  
  Slack answer bots
&lt;/h3&gt;

&lt;p&gt;A bot that fields "how does X work" questions in chat, backed by whatever retrieval the builder had time for. Teams liked the interface and disliked the answers; one described its internal bot as wrong most of the time, which is worse than no bot, because confident wrong answers spread further than silence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Per-team MCP patchworks
&lt;/h3&gt;

&lt;p&gt;About 3 in 10 organizations described every developer or team wiring up its own set of MCP servers: one for the issue tracker, one for the wiki, one for chat, each with its own API keys and reauthentication quirks. This is the configuration &lt;a href="https://getunblocked.com/blog/mcp-tool-overload/" rel="noopener noreferrer"&gt;we have measured burning context windows before a task even starts&lt;/a&gt;, and the fatigue was audible: every laptop carrying its own pile of API keys and server configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLAUDE.md fleets
&lt;/h3&gt;

&lt;p&gt;Roughly a third of organizations relied on rules files, CLAUDE.md, AGENTS.md, cursor rules, as their primary context mechanism, duplicated across repositories. The approach is legitimate at small scale, and &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;the official guidance&lt;/a&gt; is candid about its limits: files past a couple hundred lines reduce adherence, and when two rules conflict the agent may pick one arbitrarily. At fleet scale it becomes a distribution problem: teams with repository counts in the hundreds described keeping those files consistent across all of them as a standing engineering chore of its own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Curated internal knowledge bases
&lt;/h3&gt;

&lt;p&gt;The static version: a hand-assembled corpus of best practices, architecture notes, and specs, maintained by one motivated person. These earned real early praise, and one consistent epitaph: static means obsolete unless somebody keeps feeding it, and somebody eventually stops.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the lifecycle? It worked, until it didn't
&lt;/h2&gt;

&lt;p&gt;If the shapes vary, the arc does not. Roughly three in four builders narrated the same four-act story, unprompted. Act one: build. An AI-curious staff engineer or platform team assembles the stack in weeks, usually alongside their actual job. Act two: early success. The demo lands, leadership notices, adjacent teams ask for access. Act three: the wall. The index quietly goes stale, the maintainer gets pulled onto roadmap work, answer quality degrades in ways nobody measures, and trust erodes faster than the system does. Act four: the build vs buy context evaluation, which is where we met them.&lt;/p&gt;

&lt;p&gt;A typical version of this sounds like (illustrative composite, not a real individual): "One of our senior engineers built RAG over the wiki last winter. The first month was genuinely impressive. Now the embeddings are three reorgs old, he maintains it between feature work, and the team quietly went back to asking each other questions in chat."&lt;/p&gt;

&lt;p&gt;Two structural forces drive the arc. First, maintenance, not construction, is the cost center; industry analyses consistently put &lt;a href="https://zylo.com/blog/build-vs-buy-software-pros-and-cons" rel="noopener noreferrer"&gt;maintenance at more than half of a system's lifecycle cost&lt;/a&gt;, often several times the original build. Second, a context stack decays on a different clock than most internal tools. A stale dashboard is annoying; a stale context stack injects outdated facts into every agent that queries it, which is how &lt;a href="https://getunblocked.com/blog/ai-agent-deprecated-api/" rel="noopener noreferrer"&gt;agents end up recommending deprecated APIs&lt;/a&gt; with total confidence. The recurring realization: keeping the thing truthful is a full-time job nobody was hired to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the five failure modes?
&lt;/h2&gt;

&lt;p&gt;Every frequency below is the share of the roughly 150 organizations in which the theme surfaced organically. Nobody was handed a questionnaire; these are rounded counts of what teams volunteered.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Staleness with no owner (more than 4 in 10)
&lt;/h3&gt;

&lt;p&gt;The most common failure, and the most predictable. Docs written before the code changed, wiki sections describing systems that no longer exist, indexes on a refresh loop too slow for engineering questions. The sharpest formulation we heard, repeatedly and in different words: documentation stops being true the moment it is published, and the code becomes the only current source. The RAG literature keeps finding the same thing: &lt;a href="https://atlan.com/know/rag-accuracy-problems/" rel="noopener noreferrer"&gt;semantic similarity has no correlation with recency&lt;/a&gt;, so a retriever cannot tell yesterday's truth from last year's. A 2026 twist: several teams worried that AI-generated documentation is inflating the corpus faster than anyone can curate it, garbage becoming a source for somebody else's agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Token waste (roughly 4 in 10)
&lt;/h3&gt;

&lt;p&gt;Homegrown stacks tend to over-retrieve, because retrieval is cheap to build and relevance ranking is not. Teams described agents re-deriving the same architectural context every session, enterprise search dumping tens of thousands of tokens the model immediately discards, and MCP tool definitions consuming context before the first user message. This is the mechanical waste we've broken down in &lt;a href="https://getunblocked.com/blog/why-ai-agents-burn-tokens/" rel="noopener noreferrer"&gt;why AI agents burn tokens&lt;/a&gt;, and it compounds with scale: one leader at a 1,000-plus developer organization did the multiplication mid-call and did not like the product.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. No conflict resolution between sources (about a third)
&lt;/h3&gt;

&lt;p&gt;Covered in depth below, because it deserves it.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. MCP and tool sprawl (about a third)
&lt;/h3&gt;

&lt;p&gt;Every source got its own server, every server its own keys, and nobody owns the aggregate. Teams described collision-prone shared secrets, agents operating on human credentials with no identity of their own, and onboarding checklists that grew a new integration step per quarter. The MCP standard itself is healthy, &lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro" rel="noopener noreferrer"&gt;an open protocol with broad ecosystem support&lt;/a&gt;, which is precisely why unmanaged proliferation is the default outcome: connecting one more source is always locally rational.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Dedicated maintenance cost (about 3 in 10)
&lt;/h3&gt;

&lt;p&gt;The quiet one. Teams counted the headcount only after the fact: the part-time curator, the platform squad diverted from roadmap, five teams building five incompatible versions of the same thing. The bluntest summary we heard, paraphrased: an internal system like this needs permanent engineering headcount behind it, or it fails. Organizations that had done the accounting talked about homegrown context the way they talk about running their own email: possible, and mostly a way to spend senior engineers on an undifferentiated problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does "which truth wins" defeat DIY stacks?
&lt;/h2&gt;

&lt;p&gt;About a third of all conversations landed, unprompted, on the same question: when two sources disagree, which one does the system believe? The wiki says the v1 endpoint retires in Q3; the chat thread moved it to Q1; the code shows it already gone. Two patterns coexist in the codebase and the agent needs to know which one is the standard, not which one is more common.&lt;/p&gt;

&lt;p&gt;This is the problem that separates retrieval from resolution, and it is where homegrown stacks structurally give up. Similarity search returns all versions of the truth, ranked by phrasing rather than authority. Generation makes it worse: when a knowledge base contains contradictions, &lt;a href="https://atlan.com/know/rag-accuracy-problems/" rel="noopener noreferrer"&gt;the model tends to fabricate a resolution rather than acknowledge uncertainty&lt;/a&gt;. Teams had felt this directly: two engineers getting different answers to the same question, an authoritative-sounding source sending the model down a direction that wasted a day, human opinions in chat outranking the code because they were more recent and more confident.&lt;/p&gt;

&lt;p&gt;What makes this fatal for DIY specifically is that resolution requires signals no single team can cheaply assemble: recency with decay, code as ground truth for current behavior, and a model of who actually knows what, built from years of review and authorship activity. A few teams asked to designate subject-matter experts by hand, a reasonable patch that becomes its own stale registry within a quarter. We've compared &lt;a href="https://getunblocked.com/blog/conflicting-context-tools/" rel="noopener noreferrer"&gt;which tools genuinely attempt conflict resolution&lt;/a&gt;; the short version is that almost everything in the category, homegrown or commercial, ranks results and calls it a day.&lt;/p&gt;

&lt;h2&gt;
  
  
  What did teams want instead?
&lt;/h2&gt;

&lt;p&gt;The asks were consistent enough to read as a requirements document for the category. Ranked by rough frequency across our conversations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Permission inheritance (close to half): answers must respect the asker's existing access, private channels, restricted spaces, contractor boundaries, without a parallel ACL system to maintain.&lt;/li&gt;
&lt;li&gt;Automatic freshness (about a third): the stack should notice change and re-index itself; any design requiring a human to feed it was treated as disqualified on sight.&lt;/li&gt;
&lt;li&gt;One integration point (about a third): a single connection that replaces the patchwork, the ask behind every &lt;a href="https://getunblocked.com/blog/team-memory-hubs-ai-agents/" rel="noopener noreferrer"&gt;team memory hub&lt;/a&gt; evaluation we see. Teams that already owned enterprise search kept asking why it was not enough; &lt;a href="https://getunblocked.com/blog/is-glean-good-enough/" rel="noopener noreferrer"&gt;we've answered that at length&lt;/a&gt;, and so had many of them, empirically.&lt;/li&gt;
&lt;li&gt;Conflict resolution with authority (about a third): not more results, a decision, with the losing source shown.&lt;/li&gt;
&lt;li&gt;Measurable proof (about a third): benchmarks, evals, before-and-after token numbers; a business case a CFO will read. Skepticism here is earned, given that &lt;a href="https://stackoverflow.blog/2026/02/18/closing-the-developer-ai-trust-gap/" rel="noopener noreferrer"&gt;84% of developers use or plan to use AI tools while only 29% trust what they produce&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Verifiability (about 3 in 10): citations back to sources, an audit trail, a way for a human to check the answer's work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notice what is absent: nobody asked for a bigger context window or a smarter model. The research agrees that the constraint is curation, not capacity: &lt;a href="https://zylos.ai/research/2026-01-19-llm-context-management/" rel="noopener noreferrer"&gt;Zylos Research's January 2026 long-context benchmark&lt;/a&gt; found models degrade well before their claimed limits and attributed roughly 65% of 2025 enterprise AI failures to context drift, and the wanted list above is a specification for the machinery that does the curating. It maps closely to the upper levels of our &lt;a href="https://getunblocked.com/context-maturity/" rel="noopener noreferrer"&gt;context maturity framework&lt;/a&gt;: teams were describing, in their own vocabulary, the jump from ad hoc context to a governed, self-maintaining layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does Unblocked fit?
&lt;/h2&gt;

&lt;p&gt;This is a research piece, so the pitch stays short. The findings above are, transparently, why Unblocked is built the way it is: a &lt;a href="https://getunblocked.com/blog/unblocked-context-engine-for-agents/" rel="noopener noreferrer"&gt;context engine that agents reach through one MCP server&lt;/a&gt;, with continuous ingestion for freshness, permission inheritance from source systems, and conflict resolution that weighs code, recency, and expertise before anything reaches a context window. It is the managed version of the thing 4 in 10 of these teams started building, minus &lt;a href="https://getunblocked.com/blog/build-context-layer-engineering/" rel="noopener noreferrer"&gt;the parts that made them stop&lt;/a&gt;, and unlike &lt;a href="https://getunblocked.com/blog/memory-mcp-servers-compared/" rel="noopener noreferrer"&gt;memory layers you bolt on and maintain yourself&lt;/a&gt;, nobody on your team owns the feeding schedule.&lt;/p&gt;

&lt;p&gt;One customer, from our approved public quotes rather than these conversations, describes the day-to-day: "My biggest use of Unblocked MCP has been AI governance — searching across Slack, fourteen Notion docs, S3, trying to understand where data lives and where the gaps are. There is no other way to humanly accomplish this task. It's an absolute godsend for getting context out of sources that don't talk to each other." — Gustavo Alvarez, Software Engineer, Sixfold&lt;/p&gt;

&lt;h2&gt;
  
  
  Methodology
&lt;/h2&gt;

&lt;p&gt;The numbers in this post come from 194 conversations held between May and August 2026 with engineering teams evaluating context tooling, representing roughly 150 distinct organizations after deduplicating repeat conversations. Organizations ranged from solo technical founders to enterprises with tens of thousands of engineers, across fintech, healthcare, security, gaming, travel, industrial, and public-sector software.&lt;/p&gt;

&lt;p&gt;Frequencies are rounded counts of themes that surfaced organically in conversation, not answers to a fixed questionnaire, so every figure is a floor: a team with a staleness problem that never mentioned it is not counted. All figures are deliberately rounded because false precision would overstate what conversation data can support.&lt;/p&gt;

&lt;p&gt;The selection bias matters and we want to be honest about it: every one of these teams booked a call with a context-tooling vendor. They are, by construction, predisposed to believe context is a problem worth solving, and builders hitting a wall are exactly the teams most likely to take such a call. This sample says a lot about what happens to teams that build homegrown context stacks, and nothing statistically defensible about what share of all engineering teams build one. Treat the failure-mode frequencies as well-grounded within this population and the headline build rate as an upper bound on the general one.&lt;/p&gt;

&lt;p&gt;To protect confidentiality, no company names, verbatim quotes, or identifying details from these conversations appear here; all patterns are aggregated, and the one marked composite is an illustrative construction, not a real individual.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Is it ever right to build your own context stack?
&lt;/h3&gt;

&lt;p&gt;Yes, in narrow cases: hard data-sovereignty constraints commercial tools cannot yet meet, genuinely unusual source systems, or context infrastructure that is itself your product. Even then, the honest budget is not the build, it is the permanent staffing to keep the stack fresh, permission-correct, and conflict-aware. If the build vs buy context math only works with maintenance rounded to zero, it does not work.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much does a homegrown context stack really cost to maintain?
&lt;/h3&gt;

&lt;p&gt;Teams in our conversations rarely knew until they audited it, which is itself the finding. The visible cost is the part-time curator; the invisible costs are the diverted platform squad, duplicate builds across teams, and over-retrieval token waste at fleet scale. General software economics put maintenance at more than half of lifecycle cost, and context stacks skew worse because their core asset, organizational truth, decays continuously.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should we measure before deciding to replace ours?
&lt;/h3&gt;

&lt;p&gt;Three things, over two weeks: answer accuracy on questions you already know the answers to, staleness lag between a real change and the stack reflecting it, and tokens consumed per completed task with and without the stack in the loop. Teams that ran even informal versions of this evaluation made faster and calmer decisions than teams arguing from anecdote. A structured starting point: our &lt;a href="https://readiness.getunblocked.com/" rel="noopener noreferrer"&gt;AI readiness assessment&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you're at the build-vs-buy fork
&lt;/h2&gt;

&lt;p&gt;The 194 conversations behind this post suggest the fork is usually mislabeled. The real choice is not build versus buy; it is who maintains the truth. Building the retrieval pipeline is the tractable, weekend-sized part, which is why so many teams have done it. Deciding which truth wins, noticing staleness before your agents repeat it, and honoring permissions across every source is the permanent part, and it is the same problem at every company. If your homegrown context stack is in act two of the lifecycle, enjoy it, measure it, and set a calendar reminder for act three. If you are already at the wall, you are in numerically excellent company: so was roughly a third of everyone we talked to this year.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Tools That Resolve Conflicting Information Between Docs, Code, and Slack</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Thu, 20 Aug 2026 09:00:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/tools-that-resolve-conflicting-information-between-docs-code-and-slack-3j15</link>
      <guid>https://dev.to/dennis_pilarinos/tools-that-resolve-conflicting-information-between-docs-code-and-slack-3j15</guid>
      <description>&lt;p&gt;If you need a tool that resolves conflicting information between your docs, your code, and your Slack history, Unblocked is the pick, because it is the only tool in this roundup whose core job is reconciling code, pull requests, Slack threads, and docs into a single conflict-resolved answer, weighted by recency and authority signals instead of similarity scores. That claim deserves immediate qualification, though: almost nothing in this category actually adjudicates between contradictory sources. Most tools retrieve. Some aggregate. A couple ask humans to settle disputes ahead of time. Genuine machine-side adjudication is rare, and pretending otherwise would make this a useless page. So here is the honest landscape, including where each tool's model of truth comes from and where it stops.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bottom line: aggregation puts three contradictory sources in front of you or your agent and lets you guess. Resolution decides which source to believe, says why, and shows the losing source anyway. Only one tool in this roundup treats that second step as the product; the rest either rank results, stay inside one source of truth, or delegate the adjudication to humans.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why do docs, code, and Slack disagree in the first place?
&lt;/h2&gt;

&lt;p&gt;Because each one captures a different moment in a decision's life. A doc records intent at the time of writing. Code records what actually shipped, including the compromises nobody wrote down. Slack records the moment the plan changed, usually in a thread with eleven participants and no follow-up edit to the doc. Nothing back-propagates. The Confluence page that says "we retire the v1 endpoint in Q3" stays confident long after the thread that pushed it to Q1, which is how &lt;a href="https://getunblocked.com/blog/ai-agent-deprecated-api/" rel="noopener noreferrer"&gt;agents end up recommending deprecated APIs&lt;/a&gt; with complete conviction.&lt;/p&gt;

&lt;p&gt;The problem is compounding. Writing a document now costs nothing, so document volume is climbing while average document authority falls. When three sources disagree, an engineer applies judgment: who wrote this, when, did it ship, did anyone senior push back? An agent &lt;a href="https://getunblocked.com/blog/coding-agent-source-of-truth/" rel="noopener noreferrer"&gt;treats every retrieved chunk as equally true&lt;/a&gt; unless something upstream decides otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does retrieval alone make conflicts worse?
&lt;/h2&gt;

&lt;p&gt;Similarity search has a structural bias toward the wrong answer. Call it the superseded-policy problem: the old policy doc is a polished, keyword-dense statement of exactly the thing you asked about, so it embeds beautifully and ranks first. The correction lives in a rambling Slack thread that mentions the policy once, obliquely, in a reply. Semantic similarity ranks the stale source above the current one almost by design, because clean prose about the topic beats messy prose about the change.&lt;/p&gt;

&lt;p&gt;For a human skimming ten results, that is survivable. For an agent, it is fatal, because agents suffer from satisfaction of search: the first plausible hit becomes the truth they act on. A retrieval layer that returns contradictory chunks without adjudication launders stale information into confident output. This is the core reason &lt;a href="https://getunblocked.com/blog/context-engine-vs-enterprise-search/" rel="noopener noreferrer"&gt;enterprise search and a context engine are different products&lt;/a&gt;: one optimizes for finding, the other for deciding.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the tools?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Unblocked: synthesis with conflict resolution built in
&lt;/h3&gt;

&lt;p&gt;Unblocked is a context engine that connects GitHub, GitLab, Slack, Microsoft Teams, Confluence, Jira, Linear, SharePoint, Sentry, Datadog, and more, and, per &lt;a href="https://docs.getunblocked.com/" rel="noopener noreferrer"&gt;its documentation&lt;/a&gt;, "reconciles information across sources, including sources that contradict each other," answering with citations rather than a results list. Truth is decided by layered signals: code as ground truth for current behavior, recency with decay, and an expert graph built from PR and review activity that weights a statement by who made it. Agents reach the same engine &lt;a href="https://getunblocked.com/blog/unblocked-context-engine-for-agents/" rel="noopener noreferrer"&gt;through one MCP server&lt;/a&gt;, so the reconciliation happens before anything lands in a context window. It is the only entry here where adjudication is the headline feature, not a side effect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Glean: broad aggregation, retrieval-ranked
&lt;/h3&gt;

&lt;p&gt;Glean is the heavyweight aggregator. Its &lt;a href="https://www.glean.com/product/workplace-search-ai" rel="noopener noreferrer"&gt;workplace search product&lt;/a&gt; indexes 275+ app connectors, enforces source permissions in real time, and ranks results using a &lt;a href="https://www.glean.com/product/knowledge-graph" rel="noopener noreferrer"&gt;knowledge graph&lt;/a&gt; of people, projects, teams, and processes that personalizes relevance to the asker. That is a serious retrieval system. What its public documentation does not describe is adjudication: when Confluence and Slack disagree, Glean returns both, ranked by relevance, and the reader decides. For general enterprise search that is a defensible design. For engineering truth questions, it is &lt;a href="https://getunblocked.com/blog/is-glean-good-enough/" rel="noopener noreferrer"&gt;the gap we've written about before&lt;/a&gt;: ranking is not deciding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Atlassian Rovo: Atlassian sources first
&lt;/h3&gt;

&lt;p&gt;Rovo is Atlassian's play, built on its Teamwork Graph connecting teams, work, and goals. Its search &lt;a href="https://support.atlassian.com/rovo/docs/what-is-rovo/" rel="noopener noreferrer"&gt;combines results from Atlassian apps like Jira and Confluence with connected third-party apps such as Google Drive and Slack&lt;/a&gt;, and it respects source permissions. The &lt;a href="https://www.atlassian.com/rovo" rel="noopener noreferrer"&gt;product page&lt;/a&gt; emphasizes agents that automate workflows across that graph. Its docs do not describe how contradictions between sources get settled. If your engineering truth lives mostly in Jira and Confluence, Rovo's home-field coverage is real; if the correction usually lands in a PR review or a code discussion, you are outside its center of gravity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sourcegraph: code is the only witness
&lt;/h3&gt;

&lt;p&gt;Sourcegraph takes the cleanest position by refusing the question. Its &lt;a href="https://sourcegraph.com/docs" rel="noopener noreferrer"&gt;platform&lt;/a&gt; covers code search across every repo, branch, and code host, plus Deep Search, an AI agent that answers natural-language questions about the codebase. Sources of truth never conflict because there is exactly one: the code. That makes it a sharp answer to "what does the system do right now" and structurally silent on "what did we decide" or "why." The code can faithfully implement a decision that was reversed in a design review last week. Code-truth is necessary; it just &lt;a href="https://getunblocked.com/blog/what-your-coding-agent-cant-see/" rel="noopener noreferrer"&gt;isn't sufficient&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Guru and Notion AI: humans resolve, the tool serves
&lt;/h3&gt;

&lt;p&gt;The curated-wiki model deserves fair treatment because it does resolve conflicts, just with people. &lt;a href="https://www.getguru.com/" rel="noopener noreferrer"&gt;Guru&lt;/a&gt; positions itself as a governed knowledge layer: content routes to designated experts for verification, the system flags duplicates and conflicting versions, and stale cards lose their verified status until a human re-blesses them. Notion AI runs &lt;a href="https://www.notion.com/product/ai" rel="noopener noreferrer"&gt;enterprise search across Notion, Slack, Google Drive, and GitHub&lt;/a&gt;, with a "Verify any page" badge that surfaces in search results and AI citations. Both are honest architectures: adjudication happens at write time, by humans, on a schedule. The limit is throughput. Verification cadences work for policies and runbooks; they cannot keep pace with engineering reality that changes per merge, which is why &lt;a href="https://getunblocked.com/blog/team-memory-hubs-ai-agents/" rel="noopener noreferrer"&gt;team memory hubs drift&lt;/a&gt; unless curation is someone's actual job.&lt;/p&gt;

&lt;h3&gt;
  
  
  DIY: freshness heuristics over MCP
&lt;/h3&gt;

&lt;p&gt;The build-it path: wire MCP servers for each source, stamp retrieved chunks with metadata like last-modified dates and deprecation flags, and prompt the agent to prefer fresh sources. More on why this is half a solution below.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it aggregates&lt;/th&gt;
&lt;th&gt;Resolves conflicts?&lt;/th&gt;
&lt;th&gt;How truth is decided&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Unblocked&lt;/td&gt;
&lt;td&gt;Code, PRs, Slack, Teams, Confluence, Jira, Linear, docs, incidents&lt;/td&gt;
&lt;td&gt;Yes, machine-side&lt;/td&gt;
&lt;td&gt;Recency, expert-graph authority, review status, what shipped&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Glean&lt;/td&gt;
&lt;td&gt;275+ enterprise app connectors&lt;/td&gt;
&lt;td&gt;No, ranks results&lt;/td&gt;
&lt;td&gt;Knowledge-graph relevance, personalized to the asker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Atlassian Rovo&lt;/td&gt;
&lt;td&gt;Jira, Confluence, third-party apps like Google Drive and Slack&lt;/td&gt;
&lt;td&gt;No, ranks results&lt;/td&gt;
&lt;td&gt;Teamwork Graph relevance within permissions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sourcegraph&lt;/td&gt;
&lt;td&gt;Code repositories, branches, code hosts&lt;/td&gt;
&lt;td&gt;Sidesteps it&lt;/td&gt;
&lt;td&gt;Code is the only source consulted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Guru&lt;/td&gt;
&lt;td&gt;Curated cards plus connected knowledge&lt;/td&gt;
&lt;td&gt;Flags conflicts, humans resolve&lt;/td&gt;
&lt;td&gt;Expert verification; system detects stale and conflicting content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notion AI&lt;/td&gt;
&lt;td&gt;Notion, Slack, Google Drive, GitHub&lt;/td&gt;
&lt;td&gt;Yes, by humans&lt;/td&gt;
&lt;td&gt;Page verification badges, manual curation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DIY (MCP + heuristics)&lt;/td&gt;
&lt;td&gt;Whatever you wire up&lt;/td&gt;
&lt;td&gt;Partially&lt;/td&gt;
&lt;td&gt;Freshness metadata; authority is left to the agent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How does conflict resolution actually work?
&lt;/h2&gt;

&lt;p&gt;Four signals, applied roughly the way a senior engineer applies them. Recency, with decay: a Slack message from last week outweighs one from last year, but time alone settles nothing. Authority: who said it, derived from who actually builds and reviews that area of the system, not from org charts. Review status: a merged PR carries more weight than a proposal; an approved design doc more than a draft. And what shipped: when a doc and the code disagree about current behavior, the code wins, while the doc gets reframed as intent. Unblocked applies these in combination and, when a conflict cannot be cleanly resolved, surfaces both sides with a weighting rather than silently discarding the loser. That is what makes the output &lt;a href="https://getunblocked.com/blog/decision-grade-context/" rel="noopener noreferrer"&gt;decision-grade rather than merely relevant&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here is how one customer describes it in practice: "Unblocked is the first MCP queried for everything we look up. It's not just checking the code — the code could be wrong. It pulls the Confluence docs, the feature planning documents, the Slack conversations. We can't use the Slack MCP for legal reasons, so Unblocked is the only way we can access that context. For an engineering manager trying to understand a platform fast, that's the difference." — Sam Younger, Engineering Manager, UserTesting&lt;/p&gt;

&lt;p&gt;Note the first clause: the code could be wrong. That is the whole argument against single-source truth, stated by someone living with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you build this yourself?
&lt;/h2&gt;

&lt;p&gt;Partially, and the honest split matters. The freshness half is buildable. &lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;MCP&lt;/a&gt; gives you a standard way to connect agents to Slack, Confluence, and your repos, and nothing stops you from stamping every retrieved chunk with last-modified dates and deprecation flags so the agent can prefer newer sources. Teams do this, and it beats raw similarity search.&lt;/p&gt;

&lt;p&gt;The authority half is the hard part, because recency is not authority. The newest message on a topic might be a wrong guess from someone who joined last month; the correction that matters might come from the engineer who has owned the service for two years. Deriving that weighting means building an expertise graph from commit and review history, with time decay and defenses against noisy contributors. Unblocked open-sourced &lt;a href="https://github.com/unblocked/engineering-social-graph" rel="noopener noreferrer"&gt;a simplified version&lt;/a&gt; if you want to see the shape of the problem. Most teams instead pin truth manually in rules files, which &lt;a href="https://getunblocked.com/blog/rules-files-vs-context-engine/" rel="noopener noreferrer"&gt;rot on their own schedule&lt;/a&gt; and quietly &lt;a href="https://getunblocked.com/blog/context-rot-claude-code/" rel="noopener noreferrer"&gt;degrade agent sessions&lt;/a&gt; as they drift from reality.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  What's the difference between aggregation and conflict resolution?
&lt;/h3&gt;

&lt;p&gt;Aggregation collects sources into one search surface and ranks them; the reader reconciles contradictions. Conflict resolution compares the retrieved sources against each other and applies recency, authority, and shipped-state signals to decide which claim stands, before the answer is composed. Most "all your knowledge in one place" tools do the first and market adjacent to the second.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can ChatGPT or Claude with connectors resolve conflicting sources?
&lt;/h3&gt;

&lt;p&gt;Not reliably. Connectors hand the model raw results from each source, and the model adjudicates with whatever is in its context window: no expert graph, no review-status signal, no decay model. It will often pick the most confidently worded chunk, which favors polished stale docs over messy current threads.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do knowledge graphs resolve conflicts automatically?
&lt;/h3&gt;

&lt;p&gt;No. A knowledge graph relates entities, which improves retrieval and disambiguation, and both Glean and Atlassian build on one. Relating a doc to a thread is not the same as ruling on which is correct; that ruling requires an explicit adjudication layer on top of the graph.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do agents know when a doc is stale?
&lt;/h3&gt;

&lt;p&gt;On their own, they don't; a five-year-old page and yesterday's page arrive as identical text. Staleness has to be computed upstream, from timestamps at minimum, and ideally from whether later PRs, decisions, or conversations superseded the content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which truth wins in your stack today?
&lt;/h2&gt;

&lt;p&gt;Run the test on your own system: pick a question your team has actually relitigated, something where the doc, the code, and the Slack thread genuinely diverge, and ask it through whatever your agents currently use. If you get three sources and a shrug, you have aggregation. If you get one answer with reasons and citations, including the source that lost, you have resolution. &lt;a href="https://getunblocked.com/blog/unblocked-context-engine-for-agents/" rel="noopener noreferrer"&gt;Unblocked&lt;/a&gt; is built for the second outcome; that is the difference this entire category turns on.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Why Wouldn't Claude Code Handle Your Org Context Itself?</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Wed, 19 Aug 2026 10:00:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/why-wouldnt-claude-code-handle-your-org-context-itself-4ie9</link>
      <guid>https://dev.to/dennis_pilarinos/why-wouldnt-claude-code-handle-your-org-context-itself-4ie9</guid>
      <description>&lt;p&gt;The scene repeats in almost every evaluation we sit in on. Three weeks into a Claude Code rollout, the pilot team is happy, and someone proposes adding a context engine. The CTO looks up from the deck and asks, near-verbatim: "Why wouldn't Claude solve this problem? Why would we need a third-party solution?"&lt;/p&gt;

&lt;p&gt;It's the right question, and it deserves a straight answer rather than a vendor dodge. So here it is. Claude Code is genuinely closing context gaps: CLAUDE.md, auto memory, subagents with their own memory, skills, MCP. For a solo developer on one repository, the built-ins are often enough, and we'll say so explicitly below. What Claude Code structurally won't become is the org-wide, cross-tool, permission-aware synthesis layer, because that's infrastructure, not an agent feature. An agent reads context. Something still has to decide what's true across 50 repositories, Slack, Jira, and Confluence, for every agent and every engineer, with permissions enforced. Whether Claude Code needs a context tool comes down to whether that job exists at your scale. Let's take it apart honestly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can Claude Code already do about context?
&lt;/h2&gt;

&lt;p&gt;More than most third-party pitches admit. Per the living &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;Claude Code memory docs&lt;/a&gt;, CLAUDE.md files now carry persistent instructions at four scopes: an org-wide managed policy file IT can deploy via MDM, user-level preferences, project files shared through version control, and gitignored local overrides. A &lt;code&gt;.claude/rules/&lt;/code&gt; directory splits instructions into topic files, and rules can be path-scoped so they only load when Claude touches matching files. Auto memory lets Claude write its own notes per repository, loading the first 200 lines or 25KB of its MEMORY.md index into every session, with topic files read on demand. &lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;Skills&lt;/a&gt; package procedures that load only when invoked. &lt;a href="https://code.claude.com/docs/en/sub-agents" rel="noopener noreferrer"&gt;Subagents&lt;/a&gt; can maintain their own persistent memory. And &lt;a href="https://code.claude.com/docs/en/mcp" rel="noopener noreferrer"&gt;MCP&lt;/a&gt; connects the agent to Jira, Sentry, Postgres, or anything else speaking &lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;the protocol&lt;/a&gt;. If your mental model is one flat CLAUDE.md fighting for &lt;a href="https://dev.to/blog/claude-code-context-window/"&gt;context window space&lt;/a&gt;, it's a year out of date. Any honest case for a context tool has to start from this baseline, not a strawman.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code's built-ins (CLAUDE.md, auto memory, rules, skills, MCP) handle per-user, per-repo context well; a solo dev on one repo often needs nothing else.&lt;/li&gt;
&lt;li&gt;The built-ins stop at team truth: auto memory is machine-local, rules files are hand-maintained per repo, and the docs warn that Claude may pick between contradictory rules arbitrarily.&lt;/li&gt;
&lt;li&gt;The organizational context layer is vendor-neutral infrastructure; Pragmatic Engineer's 2026 survey found 70% of engineers run 2-4 AI tools at once, and every one of them needs the same answers.&lt;/li&gt;
&lt;li&gt;A context engine adds what no single agent will ship: cross-source synthesis, conflict resolution, and permission enforcement across all your systems and all your agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where do the built-ins stop?
&lt;/h2&gt;

&lt;p&gt;At the boundary between one engineer's setup and the organization's truth. Auto memory is explicitly per-machine: the docs state files "are not shared across machines or cloud environments," so the lesson Claude learned debugging your teammate's flaky ingestion job never reaches your session. CLAUDE.md is per-repo and hand-maintained; across 50 repositories that's 50 files that &lt;a href="https://dev.to/blog/claude-code-forgets-codebase/"&gt;rot independently&lt;/a&gt; and need &lt;a href="https://dev.to/blog/keeping-claude-md-agents-md-cursorrules-in-sync/"&gt;syncing against AGENTS.md and .cursorrules besides&lt;/a&gt;. There's no conflict resolution: the docs warn that when two rules contradict each other, "Claude may pick one arbitrarily." And there's no cross-source permission model. Each MCP server is its own credential with its own access rules; nothing checks whether the engineer driving the agent should see what a connector returns from another system. That's the Claude Code organizational context problem in one sentence: every mechanism is scoped to a user, a machine, or a repo, while the truth you need is scoped to the org. The agent re-derives that truth from scratch every session, at inference time, and gets it differently each run. &lt;a href="https://dev.to/blog/rules-files-vs-context-engine/"&gt;Rules files can't close that gap&lt;/a&gt; by getting longer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Won't Anthropic just build this?
&lt;/h2&gt;

&lt;p&gt;They'll keep building, and the built-ins will keep improving; betting against that would be foolish. But look at what they ship: managed CLAUDE.md, subagent memory, an &lt;code&gt;/init&lt;/code&gt; that reads your Cursor and Copilot rules, an &lt;code&gt;/import&lt;/code&gt; that carries over a whole agent config. Every feature makes Claude Code better at consuming context. None of them makes Claude Code the arbiter of organizational truth, because that layer is vendor-neutral infrastructure and your org isn't single-vendor. &lt;a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026" rel="noopener noreferrer"&gt;Pragmatic Engineer's March 2026 tooling survey&lt;/a&gt; of 900+ engineers found 70% use two to four AI tools simultaneously, and 15% use five or more. &lt;a href="https://blog.exceeds.ai/ai-coding-tools-adoption-rates/" rel="noopener noreferrer"&gt;JetBrains' January 2026 data&lt;/a&gt; shows Copilot, Cursor, and Claude Code splitting workplace usage 29/18/18. Your team runs Claude Code and Cursor and CI review agents today, and will run something else in eighteen months. The layer that knows what's true has to outlive any one agent choice, the way your identity provider outlives any one SaaS app. Anthropic optimizing that layer for Claude alone would make it worse at its actual job. That's why &lt;a href="https://dev.to/blog/team-memory-hubs-ai-agents/"&gt;team memory belongs in a hub, not an agent&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does a context engine actually add?
&lt;/h2&gt;

&lt;p&gt;This is where Unblocked sits: institutional context for coding agents, built as infrastructure rather than as a feature of any one of them. &lt;a href="https://dev.to/blog/what-is-a-context-engine/"&gt;A context engine&lt;/a&gt; ingests your repos, Slack, Jira, Confluence, support knowledge base, and docs continuously, resolves aliases and contradictions at ingestion time, and serves synthesized, cited, permission-enforced answers to &lt;a href="https://dev.to/blog/unblocked-context-engine-for-agents/"&gt;any agent that asks&lt;/a&gt;, over a single MCP connection. The agent stops being the integration layer; the organizational knowledge layer does the assembly before a token hits your context window. One customer put it better than we can:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You cannot make coding agents work without domain and functional context. We connected and trained Unblocked on our Code repos, Atlassian tools, Internal docs, Product Documentation, KB from Support and Slack history. When an agent asks a question, it gets the full picture — not just the code analysis, but also why decisions were made and what the constraints are. Other tools like Copilot know only the code. That's limited value. Unblocked is a game changer for Coding Agents."&lt;/p&gt;

&lt;p&gt;— Raphael Bres, CTO, Tradeshift&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Note what he connected: six source families, exactly the surface no per-repo file reaches. And note the phrase "when an agent asks," singular mechanism, plural agents: the same engine answers Claude Code, Cursor, and whatever runs in CI, identically, with each requester seeing only what its human is entitled to see. That's what it means to give Claude Code organizational context instead of asking it to reconstruct some approximation per session.&lt;/p&gt;

&lt;h2&gt;
  
  
  When are the built-ins genuinely enough?
&lt;/h2&gt;

&lt;p&gt;Honestly: often. If you're a solo developer, or a small team living in one repository with decisions that fit in a couple hundred lines of CLAUDE.md, you don't need us. Keep a tight project CLAUDE.md, let auto memory accumulate what it learns, add a &lt;a href="https://dev.to/blog/when-to-use-mcp-vs-cli/"&gt;well-chosen MCP server or CLI tool&lt;/a&gt; for the one external system you touch, and revisit when something breaks. Even &lt;a href="https://dev.to/blog/memory-mcp-servers-compared/"&gt;dedicated memory MCP servers&lt;/a&gt; are overkill at that scale. The trouble starts on predictable thresholds: multiple repos with shared conventions, decisions living in Slack threads and Jira comments instead of the repo, engineers whose agents answer differently because their private memories diverged, or a compliance team asking who can retrieve what. A useful tell: count how often an agent's answer gets corrected in review with information that existed somewhere but not in the repo. Once that's weekly, the gap is organizational, not personal. Below those thresholds, saying Claude Code needs a context tool would be selling you something. Above them, the built-ins aren't failing; they were never scoped for the job, and no amount of CLAUDE.md gardening rescopes them.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Is CLAUDE.md enough organizational context for Claude Code?
&lt;/h3&gt;

&lt;p&gt;For one repo and one team, usually yes. It stops scaling when conventions span repositories, when the reasoning behind decisions lives in Slack and Jira rather than in files anyone maintains, and when contradictions accumulate that nothing resolves. A checked-in file records what someone remembered to write down; &lt;a href="https://dev.to/blog/claude-code-institutional-memory/"&gt;institutional memory&lt;/a&gt; is mostly the things nobody did.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can MCP servers give Claude Code organizational context on their own?
&lt;/h3&gt;

&lt;p&gt;They give it access, which is different. A Slack MCP returns Slack messages; a Jira MCP returns tickets. Your agent still does the cross-source assembly at inference time, on your token bill, guessing at project nicknames it has never seen and not knowing which of two conflicting answers is current. Connectors are the transport for organizational context, not the source of it. The synthesis has to happen somewhere, and an agent's context window is the most expensive possible place.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does a context engine replace CLAUDE.md or auto memory?
&lt;/h3&gt;

&lt;p&gt;No. Keep CLAUDE.md for repo-specific instructions and auto memory for personal working notes; they're good at that, and the docs keep making them better. When people ask whether Claude Code needs a context tool, they usually picture a replacement. It's a foundation: the shared, permission-aware layer the per-repo files silently assume, the thing that knows what the org actually decided, across every repo and every tool, for every agent and engineer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-question test
&lt;/h2&gt;

&lt;p&gt;When the question comes up in your own eval meeting, you don't need our framing or Anthropic's roadmap. Ask one thing: when two sources disagree about how your systems work, what decides which one the agent believes? If the answer is "the engineer notices and fixes it," you're describing the per-repo world, and Claude Code's built-ins will carry you for a while. If the answer needs to hold across 50 repos, four tools, and 200 engineers with different access rights, you've just specified infrastructure: ingestion, synthesis, conflict resolution, permission enforcement, and citations so a human can audit the answer. That spec doesn't shrink because the agent got smarter. And the agent can't grant it to itself, any more than an app can be its own identity provider. So the CTO's question has a clean answer after all. Anthropic will keep making the agent better at reading context, and you should use every bit of it. Someone still has to decide what that context says, and make your organization legible to every agent you'll ever run.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Is Glean Good Enough for Engineering Questions? An Honest Assessment</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Tue, 18 Aug 2026 09:30:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/is-glean-good-enough-for-engineering-questions-an-honest-assessment-4hmm</link>
      <guid>https://dev.to/dennis_pilarinos/is-glean-good-enough-for-engineering-questions-an-honest-assessment-4hmm</guid>
      <description>&lt;p&gt;Your company already pays for Glean, the rollout went fine, and now engineering is asking for budget for a separate knowledge tool. Someone on the eval committee asks the question this post exists to answer: is Glean good enough for engineering, or does the team actually need something built for it?&lt;/p&gt;

&lt;p&gt;The verdict: for general enterprise search across a whole company, Glean is genuinely good and often enough. For engineering-specific questions, meaning codebase behavior, architecture decisions, and why the code is the way it is, Glean hits structural limits that no amount of configuration fixes. Those limits aren't bugs or missing connectors. They come from what enterprise search fundamentally is: a retrieval system over documents, applied to a domain where the answer is rarely inside any single document.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The short version: keep Glean for company-wide search, where it earns its seat. Treat engineering knowledge as a separate problem, because the properties that make a tool great at finding documents are not the properties that make it good at explaining a codebase.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Glean actually good at?
&lt;/h2&gt;

&lt;p&gt;Quite a lot, and pretending otherwise would make the rest of this assessment worthless. Glean connects most of the enterprise stack through native connectors, push APIs for custom or self-hosted systems, and partner-built integrations (&lt;a href="https://docs.glean.com/connectors/about" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). Its permission story is real engineering: connectors fetch each source's permission map so results only show a user what they can already see in the source application (&lt;a href="https://docs.glean.com/connectors/about" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). That is harder than it sounds, and many homegrown search projects die on exactly that rock.&lt;/p&gt;

&lt;p&gt;Its AI Answers feature returns permission-aware responses with citations, and Glean documents that identical queries produce deterministic results (&lt;a href="https://docs.glean.com/user-guide/assistant/ai-answers" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). For the HR policy lookup, the sales enablement doc, the security questionnaire answer buried in Drive, Glean is a legitimately strong product with a mature compliance posture. If your evaluation is about knowledge workers broadly, you can stop reading and keep it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does it break for engineering teams?
&lt;/h2&gt;

&lt;p&gt;The problems start when the question is about a living system rather than a stored document. A sales deck from March is still true in August; the code from March is three refactors gone. That single difference in the underlying material drives four limits that show up repeatedly when teams try to use Glean for engineering knowledge, and none of them is fixable with more connectors or better prompt hygiene.&lt;/p&gt;

&lt;h3&gt;
  
  
  How code-aware is the index?
&lt;/h3&gt;

&lt;p&gt;Glean's GitHub connector indexes repositories, source files, commits, READMEs, issues with comments, and pull requests with reviews and diffs (&lt;a href="https://docs.glean.com/connectors/native/github/about" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). That sounds comprehensive, but note what it is: code stored as text documents. Glean itself describes its assistant as retrieving indexed content and generating responses from it, drawing on company knowledge, web knowledge, and the LLM's training (&lt;a href="https://docs.glean.com/user-guide/assistant/how-glean-accesses-info" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). Retrieval over text chunks is a reasonable model for prose. Code is not prose. Understanding it requires structure: what calls what, which service owns which behavior, how a function changed across releases. A keyword-relevant chunk of a 4,000-line file is not an answer to "how does billing retry work."&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the index keep up with daily code change?
&lt;/h3&gt;

&lt;p&gt;Credit where due: Glean's GitHub freshness is decent, with incremental crawls every 10 minutes and webhook-based updates (&lt;a href="https://docs.glean.com/connectors/native/github/about" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). But freshness varies by connector, with full crawls ranging from 6 hours to 28 days, and missed deletion events wait for the next full crawl (&lt;a href="https://docs.glean.com/connectors/crawling-faq" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). Initial deployment takes two to three days of crawling for a small org, 10 to 14 for a large one, plus another 2 to 14 days of ML training before Glean says you should let users in at all (&lt;a href="https://docs.glean.com/get-started/review/crawling-and-learning" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). And one operational gotcha: until each engineer individually completes a GitHub OAuth step, no GitHub content appears in their results at all (&lt;a href="https://docs.glean.com/connectors/native/github/about" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). Teams discover that one ticket at a time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you get an answer or a reading list?
&lt;/h3&gt;

&lt;p&gt;Enterprise search returns ranked documents; the synthesis burden stays with the engineer. Glean's AI Answers narrow this gap for questions whose answer lives inside one or two retrievable documents. Engineering questions rarely do. "Why do we run two payment providers?" is answered by a 2023 PR review thread, a Slack argument, an ADR that was half-updated, and a Jira ticket that contradicts the ADR. Ten relevant hits with citations is still homework. Worse, when sources conflict, ranking is not resolution; we wrote about why in &lt;a href="https://dev.to/blog/conflicting-context-tools/"&gt;how tools handle conflicting context&lt;/a&gt; and in &lt;a href="https://dev.to/blog/context-engine-vs-enterprise-search/"&gt;context engine vs enterprise search&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where did the "why" go?
&lt;/h3&gt;

&lt;p&gt;Glean's retrieval is also personalized: results are shaped by what each user has access to and interacts with, so answers can differ across users (&lt;a href="https://docs.glean.com/user-guide/assistant/how-glean-accesses-info" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). For document search that is a feature. For engineering truth it is a liability, because "why is the auth service structured this way" has one correct answer regardless of who asks. The why lives in the connective tissue between artifacts, the thing search engines index as separate documents and never join. This is the same gap that hobbles coding agents, which we covered in &lt;a href="https://dev.to/blog/what-your-coding-agent-cant-see/"&gt;what your coding agent can't see&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Glean's AI enough for codebase Q&amp;amp;A?
&lt;/h2&gt;

&lt;p&gt;For orientation questions, sometimes. "Where is the deployment runbook" or "who owns the notifications service" are retrieval problems, and Glean handles retrieval well. The harder class of question is the one that sends an engineer spelunking through git blame: what does this actually do in production, and is the doc describing it still true? The gap appears at the trust boundary. Stack Overflow's survey data shows 84% of developers using or planning to use AI tools while only 29% trust the output's accuracy, down 11 points from 2024, largely because verifying plausible-but-wrong answers costs as much as doing the work yourself (&lt;a href="https://stackoverflow.blog/2026/02/18/closing-the-developer-ai-trust-gap/" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt;, 2026). A RAG answer assembled from whichever chunks ranked highest, personalized per user, over sources that may disagree with each other, is exactly the kind of output senior engineers double-check. Once every answer needs verification against the codebase, the tool has become a suggestion box. Glean for engineering ends up trusted for finding things and distrusted for explaining them, which is a rational response to its architecture, not a rollout failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  When is Glean genuinely the right choice?
&lt;/h2&gt;

&lt;p&gt;An honest evaluation names the cases where the answer is "keep Glean and stop there." There are several:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your pain is company-wide findability, not engineering comprehension. If engineers mostly ask "where is the doc," not "why is the code like this," Glean covers it.&lt;/li&gt;
&lt;li&gt;Engineering is a small share of the org. A 40-person engineering team inside a 3,000-person company may not justify a second platform until agent adoption forces the issue.&lt;/li&gt;
&lt;li&gt;Your codebase knowledge is unusually well-documented. Teams with disciplined, current ADRs feel this gap less, though in our experience they are rare, and &lt;a href="https://dev.to/blog/homegrown-context-stacks/"&gt;homegrown context stacks&lt;/a&gt; built to compensate have their own carrying costs.&lt;/li&gt;
&lt;li&gt;You need one tool for legal, sales, support, and engineering. No engineering-native platform tries to be that, and Glean is one of the better answers to it.&lt;/li&gt;
&lt;li&gt;Procurement reality. If a second vendor review will take two quarters, deploying Glean's GitHub connector today beats a better tool you can't buy yet, and nothing about doing so forecloses adding an engineering platform later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If two or more of those describe you, the honest read of "is Glean good enough" is yes, for now. Revisit when your engineers or their agents start asking questions the index can't answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do engineering-first alternatives do differently?
&lt;/h2&gt;

&lt;p&gt;The alternative category isn't "better search." It's a context engine: a system that ingests code, PRs, Slack, tickets, and docs, then reasons across them to produce one synthesized, cited answer instead of a ranked list. Unblocked, the engineering-native context engine we build, connects GitHub, GitLab, Slack, Teams, Confluence, Jira, Linear, and more, and explicitly reconciles sources that contradict each other before answering (&lt;a href="https://docs.getunblocked.com/" rel="noopener noreferrer"&gt;Unblocked docs&lt;/a&gt;). It serves that answer wherever the question happens: IDE and coding agents over MCP, pull requests, Slack, CLI, web. The same institutional-memory layer that answers engineers also feeds agents, which is why teams pair it with tools like Claude Code; see &lt;a href="https://dev.to/blog/claude-code-institutional-memory/"&gt;giving Claude Code institutional memory&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here's how one customer describes the difference in practice: "Unblocked is game-changing for information availability. Most AI tools are siloed. This one connects all of our documentation across the disparate systems to give answers we trust." — James Ford, Principal Engineer for Developer Experience, Compare the Market&lt;/p&gt;

&lt;p&gt;For head-to-head detail, see &lt;a href="https://dev.to/blog/unblocked-vs-glean/"&gt;Unblocked vs Glean&lt;/a&gt;, the three-way &lt;a href="https://dev.to/blog/unblocked-vs-glean-vs-augment/"&gt;Unblocked vs Glean vs Augment&lt;/a&gt;, and the broader field in &lt;a href="https://dev.to/blog/glean-alternatives/"&gt;Glean alternatives&lt;/a&gt;.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Can Glean search code?
&lt;/h3&gt;

&lt;p&gt;Yes. Its GitHub connector indexes source files, commits, issues, and PRs with reviews and diffs, across common code and text file types, though wikis and GitHub Pages content aren't indexed by default (&lt;a href="https://docs.glean.com/connectors/native/github/about" rel="noopener noreferrer"&gt;Glean docs&lt;/a&gt;). Searching code as text is the easy half; the hard half is answering questions about behavior and history, which retrieval alone doesn't do.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Glean good enough for a small engineering team?
&lt;/h3&gt;

&lt;p&gt;Often, yes. If the team's questions are mostly findability and the org already runs Glean, the marginal pain may not justify a second tool yet. The tipping points are AI agent adoption and codebase archaeology becoming a daily activity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does replacing Glean make sense, or do teams run both?
&lt;/h3&gt;

&lt;p&gt;Most engineering teams we see run both: Glean as company-wide search, an engineering knowledge platform for codebase Q&amp;amp;A and agent context. They solve different problems, so this is complement, not rip-and-replace. Our &lt;a href="https://dev.to/blog/best-engineering-knowledge-platforms-ai-coding-agents-2026/"&gt;engineering knowledge platform roundup&lt;/a&gt; covers how the categories split.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should we test during a Glean-for-engineering trial?
&lt;/h3&gt;

&lt;p&gt;Ask questions whose answers span systems: "why did we pick this queue," "what broke last time we touched checkout," "which of these two docs is current." Score whether you got a defended answer or a list of links. Our &lt;a href="https://dev.to/blog/best-ai-tools-for-engineering-teams/"&gt;AI tools for engineering teams guide&lt;/a&gt; includes more evaluation prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to decide in one afternoon
&lt;/h2&gt;

&lt;p&gt;Skip the six-week bake-off. Collect the last ten real questions engineers asked in Slack that took a senior person to answer. Run all ten through Glean and through an engineering-native platform. Grade each response on three axes: did it synthesize one answer or return links, did it cite sources you could check, and did it explain why the system is the way it is rather than just where something lives. Glean will win the pure findability questions, and that result is worth respecting. If the why-questions come back as reading lists, you have your answer on whether Glean for engineering is enough, and it took an afternoon instead of a quarter. Whichever way it lands, you'll have decided on evidence from your own codebase rather than anyone's pitch deck, ours included.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
    <item>
      <title>The Snowflake Copilot Autofix Incident: An AI Approved Removing a Guardrail Nobody Told It About</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Mon, 17 Aug 2026 23:22:02 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/the-snowflake-copilot-autofix-incident-an-ai-approved-removing-a-guardrail-nobody-told-it-about-3na0</link>
      <guid>https://dev.to/dennis_pilarinos/the-snowflake-copilot-autofix-incident-an-ai-approved-removing-a-guardrail-nobody-told-it-about-3na0</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://getunblocked.com/blog/copilot-autofix-snowflake-incident/" rel="noopener noreferrer"&gt;getunblocked.com&lt;/a&gt; on August 17, 2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On June 18, 2026, a routine-looking pull request merged into &lt;a href="https://github.com/snowflakedb/snowflake-connector-net/pull/1218" rel="noopener noreferrer"&gt;snowflake-connector-net&lt;/a&gt;, Snowflake's public .NET driver repository. PR #1218, "SNOW-2069227: Update jira workflows," reworked the repository's Jira automation, and it carried a co-author trailer that would later make headlines: "Copilot Autofix powered by AI." Somewhere in that refactor, the existing sanitized-input pattern in the &lt;code&gt;jira_issue.yml&lt;/code&gt; GitHub Actions workflow disappeared, replaced by direct string interpolation in a &lt;code&gt;run:&lt;/code&gt; block. For five days, any GitHub user with a crafted issue title could execute commands inside Snowflake's CI.&lt;/p&gt;

&lt;p&gt;On June 23, &lt;a href="https://www.wiz.io/blog/red-agent-snowflake-copilot-cicd-bug" rel="noopener noreferrer"&gt;Wiz Research's autonomous "Red Agent"&lt;/a&gt; found the flaw while scanning Snowflake's GitHub organization, built a working exploit, and pulled a Jira API token through an out-of-band callback. Wiz reported it through Snowflake's HackerOne program that day. Snowflake patched it the same day, rotated the token on June 24, and its investigation found no evidence of unauthorized access. The full writeup went public on August 17.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In brief: The Copilot Autofix Snowflake incident isn't a story about reckless AI. A refactor removed a sanitization pattern nobody remembered the reason for, an AI reviewer and a human reviewer both approved it, and an AI security agent exploited the gap five days later. The failure was missing context, not too much automation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What actually happened?
&lt;/h2&gt;

&lt;p&gt;The refactor reworked how the repository's workflows talked to Jira, and along the way &lt;code&gt;jira_issue.yml&lt;/code&gt; lost its safe input handling. The old workflow passed the issue title through an &lt;code&gt;env:&lt;/code&gt; variable and built its JSON payload with &lt;code&gt;jq --arg&lt;/code&gt;, so untrusted text never touched the shell parser. The new version interpolated &lt;code&gt;${{ github.event.issue.title }}&lt;/code&gt; straight into a &lt;code&gt;run:&lt;/code&gt; block. One single quote in an issue title and you're out of the echo string, running arbitrary commands on the runner.&lt;/p&gt;

&lt;p&gt;A guard condition made it worse by looking effective. The workflow checked &lt;code&gt;github.event.pull_request.user.login&lt;/code&gt;, a field that's always null on issue events, so the check blocked nobody. When Wiz's Red Agent scanned the repo on June 23, it spotted the pattern, hit a shell syntax error on its first attempt, analyzed the failure, adjusted its payload, and exfiltrated the Jira token for &lt;code&gt;qa@snowflake.net&lt;/code&gt;. That token had read access to Snowflake's engineering, security compliance, and bug bounty projects. Wiz deleted everything it accessed, and Snowflake's audit review found no other third party had touched the endpoint during the five-day window.&lt;/p&gt;

&lt;h2&gt;
  
  
  What was Copilot Autofix's actual role?
&lt;/h2&gt;

&lt;p&gt;Here's where early headlines got ahead of the facts. The commit carries a Co-authored-by trailer for "Copilot Autofix powered by AI," and initial coverage read that as the AI writing the vulnerable change. Wiz has since updated its post to clarify: Copilot Autofix checked the merged PR and code change and identified it as all-clear without noticing the critical vulnerabilities. Whether the deletion itself was AI-assisted is unclear; &lt;a href="https://thehackernews.com/2026/08/snowflake-github-actions-flaw-lets_0330881554.html" rel="noopener noreferrer"&gt;The Hacker News&lt;/a&gt; reports the bot's direct modification was to &lt;code&gt;jira_close.yml&lt;/code&gt;, while a Snowflake engineer authored the &lt;code&gt;jira_issue.yml&lt;/code&gt; change.&lt;/p&gt;

&lt;p&gt;The correction sharpens the lesson rather than softening it. &lt;a href="https://docs.github.com/en/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning" rel="noopener noreferrer"&gt;GitHub's own docs&lt;/a&gt; are candid that Autofix "may suggest fixes that fail to remediate the underlying vulnerability or introduce new vulnerabilities," and that every suggestion requires explicit developer review. In the Copilot Autofix Snowflake timeline, the AI in the loop wasn't a rogue author. It was one of the &lt;a href="https://getunblocked.com/blog/best-ai-code-review-tools/" rel="noopener noreferrer"&gt;review tools&lt;/a&gt; in the pipeline, and it blessed a change it had no reason to distrust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why did review miss it?
&lt;/h2&gt;

&lt;p&gt;Because everyone reviewing it, human and machine, was judging the diff on its face. The &lt;code&gt;env:&lt;/code&gt; plus &lt;code&gt;jq&lt;/code&gt; indirection is exactly the mitigation &lt;a href="https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions" rel="noopener noreferrer"&gt;GitHub's security hardening guide&lt;/a&gt; prescribes for untrusted input, which strongly suggests it was there on purpose. But nothing in the diff said so. No comment, no linked decision, no trace of whoever added it or why. That's Chesterton's fence, agent edition: the fence got removed because nothing in anyone's context explained what it was holding back.&lt;/p&gt;

&lt;p&gt;To a reviewer who only sees the diff, deleting that indirection reads as simplification: a cleaner script with fewer moving parts. The stated goal of the PR was modernization, and against that goal the change looks like progress. Commenters on &lt;a href="https://news.ycombinator.com/item?id=49331423" rel="noopener noreferrer"&gt;Hacker News&lt;/a&gt; were honest about it: "I probably would have made the same mistake." The change was context-blind, and so was the review of it. Agents &lt;a href="https://getunblocked.com/blog/what-your-coding-agent-cant-see/" rel="noopener noreferrer"&gt;can't see what isn't in their context&lt;/a&gt;, rules files &lt;a href="https://getunblocked.com/blog/rules-file-rot/" rel="noopener noreferrer"&gt;rot&lt;/a&gt;, and models confronted with a gap will &lt;a href="https://getunblocked.com/blog/why-claude-code-invents-functions/" rel="noopener noreferrer"&gt;fill it with something plausible&lt;/a&gt;. Plausible is what got merged.&lt;/p&gt;

&lt;h2&gt;
  
  
  What would context-aware review have seen?
&lt;/h2&gt;

&lt;p&gt;The history the diff couldn't show. Somewhere in the repository's past sits the change that introduced the &lt;code&gt;env:&lt;/code&gt;/&lt;code&gt;jq&lt;/code&gt; pattern, and, if it was deliberate, whatever hardening pass or review discussion put it there: the moment someone decided issue titles should never touch a &lt;code&gt;run:&lt;/code&gt; block directly. A reviewer with access to that history could have seen the deletion not as a simplification but as a guardrail coming down, and asked why it was safe to remove.&lt;/p&gt;

&lt;p&gt;This is the case for &lt;a href="https://getunblocked.com/blog/building-ai-code-review-with-context-as-a-first-class-system/" rel="noopener noreferrer"&gt;context-aware code review&lt;/a&gt;, and it's what we build at Unblocked: an institutional-memory layer for PR review that surfaces the decisions behind the code, pulling &lt;a href="https://getunblocked.com/blog/decision-grade-context/" rel="noopener noreferrer"&gt;decision-grade context&lt;/a&gt; from PRs, docs, and team chat into the moment a change is judged. One of our customers put it plainly:&lt;/p&gt;

&lt;p&gt;"LLMs are only as good as their context, and code alone gives them a narrow view — the codebase is always behind where the team wants to go. When I plugged Unblocked into our context-gathering and PR review steps, it brought in the Slack conversations where real architectural decisions get made. We went from three rounds of PR review to one before the code was production-ready." — Pablo Vallejo, Engineering Manager, Clio&lt;/p&gt;

&lt;p&gt;Review that &lt;a href="https://getunblocked.com/blog/claude-code-institutional-memory/" rel="noopener noreferrer"&gt;remembers why&lt;/a&gt; is review that can catch a deleted fence.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should teams change this week?
&lt;/h2&gt;

&lt;p&gt;The most transferable Copilot Autofix Snowflake lessons are mechanical. Run a workflow auditor like &lt;a href="https://docs.zizmor.sh/audits/" rel="noopener noreferrer"&gt;zizmor&lt;/a&gt; in CI; its template-injection audit flags exactly the &lt;code&gt;${{ }}&lt;/code&gt;-in-&lt;code&gt;run:&lt;/code&gt; pattern that burned Snowflake. Enforce GitHub's intermediate-environment-variable rule for anything derived from &lt;code&gt;github.event&lt;/code&gt;, and test your guard conditions against the events they actually fire on, since a check that references a nonexistent field fails open.&lt;/p&gt;

&lt;p&gt;Then fix the context layer, because linters only catch known patterns. Treat AI-co-authored changes to security-relevant files, workflows, auth code, and input handling as a signal to review harder, not a reason to &lt;a href="https://getunblocked.com/blog/stop-babysitting-your-agents/" rel="noopener noreferrer"&gt;skim&lt;/a&gt;. Agents confidently ship changes their training and context can't justify, whether that's &lt;a href="https://getunblocked.com/blog/ai-agent-deprecated-api/" rel="noopener noreferrer"&gt;calling deprecated APIs&lt;/a&gt; or deleting sanitization, and the burden of catching that lands on review. Finally, when you remove code that looks like defensive indirection, make the PR say why it's safe to remove. And wire your reviewers, human and AI, to a &lt;a href="https://getunblocked.com/blog/coding-agent-source-of-truth/" rel="noopener noreferrer"&gt;source of truth&lt;/a&gt; that includes decision history, so "why does this exist?" gets answered before the merge button, not after the disclosure.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Did Copilot Autofix write the vulnerable code?
&lt;/h3&gt;

&lt;p&gt;It's unclear, and Wiz says so explicitly in its updated post. What's documented: the merged commit lists Copilot Autofix as a co-author, the bot's direct modification appears to be &lt;code&gt;jira_close.yml&lt;/code&gt;, a Snowflake engineer authored the &lt;code&gt;jira_issue.yml&lt;/code&gt; change, and Autofix reviewed the result and raised no alarm. Attribution aside, the operative fact doesn't change: both the AI review path and the human review path looked at the removal of a working guardrail and approved it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Was Snowflake customer data exposed?
&lt;/h3&gt;

&lt;p&gt;There's no evidence of it. The token at the center of the Copilot Autofix Snowflake exposure granted read access to internal Jira projects, not the Snowflake data platform. Snowflake patched the same day it was notified, rotated the token the next day, and stated its investigation "found no evidence of unauthorized access." Audit review showed Wiz was the only third party on that endpoint during the exposure window, per &lt;a href="https://www.theregister.com/security/2026/08/17/an-ai-broke-snowflakes-code-then-another-ai-agent-exploited-it/5288666" rel="noopener noreferrer"&gt;The Register&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Would a static analysis tool have caught this?
&lt;/h3&gt;

&lt;p&gt;Almost certainly. Tools like zizmor and actionlint detect template expansion of untrusted context values in &lt;code&gt;run:&lt;/code&gt; blocks, and Hacker News commenters made the same point: writing GitHub Actions without static analysis is asking for exactly this. Notably, the vulnerable pattern is the textbook example in GitHub's own hardening guide, so the detection rules are mature. But linters wouldn't have explained why the old pattern existed, and they won't flag the next guardrail that doesn't match a known signature. Pattern-matching catches the known footguns; context catches the fences.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable symmetry
&lt;/h2&gt;

&lt;p&gt;An AI waved this bug into production and an AI dug it back out, and the difference between them wasn't capability but what each one knew. Red Agent arrived with an adversarial mission, deep knowledge of injection patterns, and the persistence to iterate when its first exploit threw a syntax error. Autofix reviewed a diff with no knowledge of why the old code was shaped the way it was, no memory of the review that shaped it, and no reason to ask. Same class of model, opposite outcomes, entirely determined by context.&lt;/p&gt;

&lt;p&gt;Snowflake, for its part, handled the incident the way you'd want: same-day patch, next-day token rotation, cooperative disclosure, and a public commitment to share the lessons. None of that is a reason to pull agents out of your pipeline. The lesson of the Copilot Autofix Snowflake incident is that every reviewer you add, silicon or human, is only as good as the history you give it. Give your review process the memory your repo doesn't have.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
    <item>
      <title>CLAUDE.md vs AGENTS.md vs .cursorrules: Which File Should You Write?</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Fri, 14 Aug 2026 15:00:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/claudemd-vs-agentsmd-vs-cursorrules-which-file-should-you-write-39fb</link>
      <guid>https://dev.to/dennis_pilarinos/claudemd-vs-agentsmd-vs-cursorrules-which-file-should-you-write-39fb</guid>
      <description>&lt;p&gt;Write AGENTS.md, add a one-line CLAUDE.md bridge if you run Claude Code, and stop writing .cursorrules. That is the 2026 answer for most teams, and it comes down to reach. &lt;a href="https://agents.md/" rel="noopener noreferrer"&gt;AGENTS.md&lt;/a&gt; is the open format stewarded by the Agentic AI Foundation under the Linux Foundation, and more than 60,000 open-source projects already use it. So do over 20 tools, including OpenAI Codex, Cursor, GitHub Copilot's coding agent, Gemini CLI, Windsurf, and Zed. The claude.md vs agents.md question has one real wrinkle, though: Claude Code does not read AGENTS.md natively, and Cursor has declared its original rules file legacy. This guide covers choosing a file; syncing, auditing, and conflict precedence each have their own pages, linked where they come up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are CLAUDE.md, AGENTS.md, and .cursorrules?
&lt;/h2&gt;

&lt;p&gt;CLAUDE.md is Anthropic's memory file for Claude Code: plain markdown instructions loaded at the start of every session, treated as context rather than enforced configuration, per the &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;Claude Code memory docs&lt;/a&gt;. It supports four scope levels, from an organization-wide managed policy file down to a personal, gitignored CLAUDE.local.md.&lt;/p&gt;

&lt;p&gt;AGENTS.md is the cross-vendor open standard, described on the agents.md spec site as "a README for agents." It is standard markdown with no required fields, and agents "automatically read the nearest file in the directory tree, so the closest one takes precedence."&lt;/p&gt;

&lt;p&gt;.cursorrules is Cursor's original single-file format, and &lt;a href="https://cursor.com/help/customization/rules" rel="noopener noreferrer"&gt;Cursor's own docs&lt;/a&gt; are blunt about it: "The .cursorrules file in your project root is legacy and will be deprecated." Its successor is the &lt;a href="https://cursor.com/docs/context/rules" rel="noopener noreferrer"&gt;.cursor/rules directory&lt;/a&gt; of .mdc files, so the honest three-way comparison in 2026 is CLAUDE.md vs AGENTS.md vs the .cursor/rules directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AGENTS.md is the cross-tool standard: stewarded by the Agentic AI Foundation under the Linux Foundation, used by more than 60,000 open-source projects, and read natively by Codex, Cursor, Copilot's coding agent, Windsurf, Zed, and over a dozen more.&lt;/li&gt;
&lt;li&gt;Claude Code reads CLAUDE.md, not AGENTS.md; the documented bridge is a one-line @AGENTS.md import, a symlink, or the /import command in v2.1.213 and later.&lt;/li&gt;
&lt;li&gt;.cursorrules is legacy per Cursor's own docs; new rules belong in .cursor/rules as .mdc files, which add glob scoping and four rule types.&lt;/li&gt;
&lt;li&gt;All three files are static snapshots of your conventions; picking the right filename does not stop the contents from going stale.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CLAUDE.md vs AGENTS.md vs Cursor Rules: How Do They Compare?
&lt;/h2&gt;

&lt;p&gt;The table below compares the three formats on the dimensions that actually change your day: where the file lives, who reads it, how it nests, and how much you can put in it. Every cell traces to the vendor docs cited throughout this post: Anthropic's memory docs, the agents.md spec, and Cursor's rules docs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;CLAUDE.md&lt;/th&gt;
&lt;th&gt;AGENTS.md&lt;/th&gt;
&lt;th&gt;Cursor rules&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;File name and location&lt;/td&gt;
&lt;td&gt;CLAUDE.md at repo root or in .claude/, plus a user-level file, managed-policy paths, and CLAUDE.local.md&lt;/td&gt;
&lt;td&gt;AGENTS.md at repo root, with nested files per subproject&lt;/td&gt;
&lt;td&gt;.cursor/rules directory of .mdc files; legacy single .cursorrules at root&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner or steward&lt;/td&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;Agentic AI Foundation under the Linux Foundation&lt;/td&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agents that read it natively&lt;/td&gt;
&lt;td&gt;Claude Code; Copilot agents also honor it at repo root&lt;/td&gt;
&lt;td&gt;20+ tools including Codex, Cursor, Copilot coding agent, Windsurf, Zed, Devin, Warp, Aider, and Amp&lt;/td&gt;
&lt;td&gt;Cursor only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Format&lt;/td&gt;
&lt;td&gt;Plain markdown; block-level HTML comments stripped before load&lt;/td&gt;
&lt;td&gt;Plain markdown, no required fields&lt;/td&gt;
&lt;td&gt;Markdown plus YAML frontmatter (description, globs, alwaysApply)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nesting and hierarchy&lt;/td&gt;
&lt;td&gt;Four scope levels; walks up the directory tree; subdirectory files load on demand&lt;/td&gt;
&lt;td&gt;Nested files, nearest wins; Codex merges home, repo root, then working directory&lt;/td&gt;
&lt;td&gt;Nested rules directories; Team, then Project, then User rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Imports and composition&lt;/td&gt;
&lt;td&gt;Imports via &lt;a class="mentioned-user" href="https://dev.to/path"&gt;@path&lt;/a&gt; syntax, up to four hops deep&lt;/td&gt;
&lt;td&gt;None in the spec; tool-dependent&lt;/td&gt;
&lt;td&gt;Remote rules importable from GitHub repositories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scoping&lt;/td&gt;
&lt;td&gt;Path glob frontmatter on rules in .claude/rules/&lt;/td&gt;
&lt;td&gt;None; position in the tree only&lt;/td&gt;
&lt;td&gt;Four rule types including file-pattern matching and description-based selection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Size guidance&lt;/td&gt;
&lt;td&gt;Target under 200 lines per file&lt;/td&gt;
&lt;td&gt;32 KiB combined default budget in Codex&lt;/td&gt;
&lt;td&gt;Keep rules under 500 lines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team sharing&lt;/td&gt;
&lt;td&gt;Version control plus managed-policy deployment via MDM&lt;/td&gt;
&lt;td&gt;Version control&lt;/td&gt;
&lt;td&gt;Version control plus dashboard-managed Team Rules on Team and Enterprise plans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ecosystem momentum&lt;/td&gt;
&lt;td&gt;Anthropic-specific, though honored at root by Copilot agents&lt;/td&gt;
&lt;td&gt;60,000+ open-source projects; the emerging standard&lt;/td&gt;
&lt;td&gt;.cursorrules is legacy; the .mdc format is Cursor-proprietary&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pattern: AGENTS.md wins on reach, Cursor rules win on scoping precision, and CLAUDE.md wins on hierarchy depth and imports for Claude-first teams. All three vendors publish size ceilings in the hundreds of lines; if you are over, here is how to &lt;a href="https://getunblocked.com/blog/audit-fix-bloated-claude-md/" rel="noopener noreferrer"&gt;audit a bloated CLAUDE.md&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Agents Read Which File in 2026?
&lt;/h2&gt;

&lt;p&gt;Only one mainstream agent holds out on the standard file, and it is Claude Code. Here is the support matrix as of August 2026, verified against vendor docs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;CLAUDE.md&lt;/th&gt;
&lt;th&gt;AGENTS.md&lt;/th&gt;
&lt;th&gt;.cursor/rules or .cursorrules&lt;/th&gt;
&lt;th&gt;Its own file&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No; bridge with an import or symlink&lt;/td&gt;
&lt;td&gt;No; the /init command can mine them into CLAUDE.md&lt;/td&gt;
&lt;td&gt;CLAUDE.md is its own file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI Codex&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes; merges home, repo root, then working directory under a 32 KiB default budget&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;AGENTS.override.md variants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, at root and in subdirectories&lt;/td&gt;
&lt;td&gt;Yes; .cursorrules still read but legacy&lt;/td&gt;
&lt;td&gt;.cursor/rules .mdc files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;Yes, at repo root&lt;/td&gt;
&lt;td&gt;Yes, nearest file wins&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;.github/copilot-instructions.md plus path-scoped .instructions.md&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini CLI&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Via the context.fileName setting&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;GEMINI.md by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windsurf&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, in any directory&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;.devin/rules preferred, .windsurf/rules as fallback, legacy .windsurfrules still read&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three of these rows contradict most existing comparisons. First, &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;Anthropic's docs&lt;/a&gt; are explicit: "Claude Code reads CLAUDE.md, not AGENTS.md." The documented bridge is a CLAUDE.md whose first line is &lt;code&gt;@AGENTS.md&lt;/code&gt;, a symlink, or the &lt;code&gt;/import&lt;/code&gt; command in v2.1.213 and later. We run that import in this very repo, and &lt;code&gt;/context&lt;/code&gt; confirms the file loads under Memory files. Second, &lt;a href="https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions" rel="noopener noreferrer"&gt;GitHub Copilot honors five instruction filenames&lt;/a&gt;: .github/copilot-instructions.md, path-scoped .instructions.md files with applyTo globs, AGENTS.md anywhere with nearest-wins precedence, and CLAUDE.md or GEMINI.md at repo root. Third, &lt;a href="https://geminicli.com/docs/cli/gemini-md/" rel="noopener noreferrer"&gt;Gemini CLI&lt;/a&gt; defaults to GEMINI.md but reads AGENTS.md if you list it under &lt;code&gt;context.fileName&lt;/code&gt; in settings.json. The Windsurf row traces to &lt;a href="https://docs.windsurf.com/windsurf/cascade/memories" rel="noopener noreferrer"&gt;Windsurf's own docs&lt;/a&gt;, now under Cognition's Devin documentation: AGENTS.md files are read in any directory of the workspace, and the native rules home has moved to .devin/rules, with .windsurf/rules kept as a fallback. When these files disagree in one repo, see &lt;a href="https://getunblocked.com/blog/coding-agent-source-of-truth/" rel="noopener noreferrer"&gt;which file wins when they disagree&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do Hierarchy, Imports, and Scoping Differ?
&lt;/h2&gt;

&lt;p&gt;This is where the formats genuinely diverge in capability rather than filename. CLAUDE.md has the deepest machinery: a four-level load order from managed policy down to CLAUDE.local.md, subdirectory files that load on demand, &lt;code&gt;@path&lt;/code&gt; imports that resolve up to four hops deep, and a .claude/rules/ directory where YAML &lt;code&gt;paths:&lt;/code&gt; frontmatter scopes a rule to matching globs.&lt;/p&gt;

&lt;p&gt;AGENTS.md is deliberately minimal: plain markdown, nested files with nearest-wins precedence, nothing else in the spec. Tools layer behavior on top; &lt;a href="https://learn.chatgpt.com/docs/agent-configuration/agents-md" rel="noopener noreferrer"&gt;Codex&lt;/a&gt; concatenates files from your home directory, repo root, and working directory, stopping at a 32 KiB default budget (project_doc_max_bytes), and it honors AGENTS.override.md files for local overrides plus a config option that adds fallback filenames.&lt;/p&gt;

&lt;p&gt;Cursor sits in between. Each .mdc rule declares one of four types: apply always, apply to specific files on a glob match, apply intelligently based on the rule's description, or apply manually. Rules nest in subdirectories; Team and Enterprise plans add dashboard Team Rules that outrank project rules. The ecosystem is converging on the same ideas (hierarchy, glob scoping, imports) and implementing them in incompatible ways.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which File Should You Write in 2026?
&lt;/h2&gt;

&lt;p&gt;The CLAUDE.md vs AGENTS.md vs .cursorrules verdict from the top, restated as scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-tool team, the 2026 default: write AGENTS.md as the canonical file and add a one-line CLAUDE.md bridge. Already running all three? The mechanics live in &lt;a href="https://getunblocked.com/blog/keeping-claude-md-agents-md-cursorrules-in-sync/" rel="noopener noreferrer"&gt;keeping CLAUDE.md, AGENTS.md, and .cursorrules in sync&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Claude Code-only team: write CLAUDE.md natively. You gain imports, path-scoped rules in .claude/rules/, and managed-policy distribution that no other format matches.&lt;/li&gt;
&lt;li&gt;Cursor-heavy team that needs glob-scoped rules: put scoped rules in .cursor/rules and the shared baseline in AGENTS.md; Cursor reads both.&lt;/li&gt;
&lt;li&gt;Anyone still on .cursorrules: migrate now. The vendor calls the format legacy, and the migration is a copy-paste into one always-apply rule.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whichever row you land on, remember that you have chosen a container for conventions, and the contents still need someone to keep them true. Pick for reach today; Linux Foundation stewardship also makes AGENTS.md the safest bet for a file you will still be maintaining in two years. What no pick solves is the maintenance itself, which is where the last part of this post goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Should I use CLAUDE.md or AGENTS.md?
&lt;/h3&gt;

&lt;p&gt;In the CLAUDE.md vs AGENTS.md decision, reach settles it: use AGENTS.md if more than one tool touches the repo, and use CLAUDE.md if Claude Code is your only agent or you need its imports, path-scoped rules, or managed-policy deployment. The two coexist cleanly: a CLAUDE.md containing the single line &lt;code&gt;@AGENTS.md&lt;/code&gt; gives both audiences the same instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Claude Code read AGENTS.md?
&lt;/h3&gt;

&lt;p&gt;No. Anthropic's memory documentation states that Claude Code reads CLAUDE.md, not AGENTS.md, which contradicts several popular comparison posts. The documented bridges are a one-line &lt;code&gt;@AGENTS.md&lt;/code&gt; import, a symlink from CLAUDE.md to AGENTS.md, or the &lt;code&gt;/import&lt;/code&gt; command available since v2.1.213.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is .cursorrules deprecated?
&lt;/h3&gt;

&lt;p&gt;Effectively, yes. Cursor's docs say the file "is legacy and will be deprecated." It is still read today for backward compatibility, but the migration path is official: move the content into a .cursor/rules .mdc file set to always apply, then delete .cursorrules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can one rules file work for all agents?
&lt;/h3&gt;

&lt;p&gt;Nearly. AGENTS.md plus a one-line CLAUDE.md bridge plus one Gemini CLI config line covers the mainstream 2026 stack: Codex, Cursor, Copilot, Windsurf, Claude Code, and Gemini CLI. What one file cannot do is stay current on its own, which is the real limit of this whole category.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Does the Rules-File Approach Run Out?
&lt;/h2&gt;

&lt;p&gt;Everything above answers which file to write. None of it fixes what the file is: a snapshot someone hand-edited, and it started going stale the moment it was saved. The 2026 evidence cuts both ways. A study of 124 pull requests across 10 repositories found AGENTS.md presence associated with a &lt;a href="https://arxiv.org/abs/2601.20404" rel="noopener noreferrer"&gt;28.64% lower median runtime and 16.58% lower output token consumption&lt;/a&gt;. But a second 2026 evaluation found repository context files &lt;a href="https://arxiv.org/abs/2602.11988" rel="noopener noreferrer"&gt;raised inference cost by over 20% on average without improving task success&lt;/a&gt;. And a study of 2,853 GitHub repositories found context files &lt;a href="https://arxiv.org/abs/2602.14690" rel="noopener noreferrer"&gt;are often the sole context mechanism a repository uses&lt;/a&gt;. The format war is about the filename; the failure mode is the file's freshness, and no filename fixes that. Why the contents decay is covered in &lt;a href="https://getunblocked.com/blog/rules-file-rot/" rel="noopener noreferrer"&gt;why rules files rot&lt;/a&gt;, and whether to keep investing in files is the subject of &lt;a href="https://getunblocked.com/blog/rules-files-vs-context-engine/" rel="noopener noreferrer"&gt;rules files vs a context engine&lt;/a&gt;. Rules files tell agents what you remembered to write down; a &lt;a href="https://getunblocked.com/blog/what-is-a-context-engine/" rel="noopener noreferrer"&gt;context engine&lt;/a&gt; like Unblocked surfaces what you didn't, serving every agent the current answer over MCP instead of a per-tool snapshot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick One File, Then Stop Writing Rules
&lt;/h2&gt;

&lt;p&gt;For most teams: AGENTS.md canonical, CLAUDE.md as a one-line bridge, .cursorrules deleted. The concrete steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create AGENTS.md at repo root, under 200 lines of stable, non-discoverable facts: build commands, conventions, the things an agent cannot infer from code.&lt;/li&gt;
&lt;li&gt;Bridge Claude Code with a CLAUDE.md whose first line is &lt;code&gt;@AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Migrate .cursorrules into .cursor/rules, or delete it if AGENTS.md now covers it.&lt;/li&gt;
&lt;li&gt;Resist moving anything that changes weekly into any of these files. All three answer the same question, namely what was true the day someone last edited them; a context engine answers what is true now.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last category of knowledge, the current and the undocumented, is what &lt;a href="https://getunblocked.com/" rel="noopener noreferrer"&gt;Unblocked&lt;/a&gt; synthesizes from your code, PRs, docs, and conversations and serves to every agent you run. If your rules files keep drifting from reality, try it alongside whichever file you picked.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>agents</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI Coding Productivity at Scale: Why the Gains Disappear</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Thu, 13 Aug 2026 15:00:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/ai-coding-productivity-at-scale-why-the-gains-disappear-485h</link>
      <guid>https://dev.to/dennis_pilarinos/ai-coding-productivity-at-scale-why-the-gains-disappear-485h</guid>
      <description>&lt;p&gt;AI coding gains disappear at scale because they are earned in the one stage of software delivery that was rarely the constraint, and the surrounding system absorbs them before they reach any org-level metric. Your pilot numbers were real. So is the flat dashboard your VP keeps pulling up. The gap between those two facts is the story of AI coding productivity at scale, and DORA's 2026 report on &lt;a href="https://dora.dev/ai/roi/report/" rel="noopener noreferrer"&gt;the ROI of AI-assisted software development&lt;/a&gt; is blunt about it: AI adoption raises individual effectiveness while also raising delivery instability, and the returns come from the organizational system around the tools rather than from the tools alone. We've already covered &lt;a href="https://getunblocked.com/blog/ai-productivity-paradox/" rel="noopener noreferrer"&gt;the AI productivity paradox&lt;/a&gt;, which asks whether individual gains are even real once you measure them properly. This piece assumes they are. The question here is different: where do genuine, keyboard-level speedups go on the way from a developer's editor to lead time, deploy frequency, and roadmap throughput?&lt;/p&gt;

&lt;h2&gt;
  
  
  Why don't individual AI speedups show up in org metrics?
&lt;/h2&gt;

&lt;p&gt;Because a delivery metric measures a system, and AI accelerates one worker inside it. When one stage of a pipeline speeds up and the stages around it don't, the output of the fast stage piles up as inventory: open PRs, unreviewed diffs, changes waiting on a deploy window. DORA's 2026 ROI report names the mechanisms directly. Reviewing AI-generated code imposes a verification tax. Adoption comes with a productivity dip the report calls the tuition cost of transformation. And rising change-failure rates create an instability tax that can push the net financial impact negative even while individual output climbs. That is what AI coding productivity at scale actually looks like in 2026 telemetry: more code produced per person, roughly the same software delivered per quarter. The pattern holds across vendors whose datasets disagree on almost everything else, which makes it worth explaining rather than explaining away. The rest of this piece walks through the five places the speedup gets absorbed: the review queue, rework, the Amdahl's-law ceiling, coordination cost, and the context-hunting tax every reviewer pays.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Individual AI speedups are real at the editor; org dashboards measure the whole delivery system, and the two keep diverging.&lt;/li&gt;
&lt;li&gt;Code review is the new constraint: AI-assisted PRs are larger, wait longer for pickup, and merge far less often than manual ones.&lt;/li&gt;
&lt;li&gt;Rework refunds part of the speedup as duplicated code, defects, and churn in the sprints that follow.&lt;/li&gt;
&lt;li&gt;Coding is a minority share of lead time, so even large coding gains cap out small at the org level.&lt;/li&gt;
&lt;li&gt;Measure lead time, rework windows, and review pickup time instead of PR counts or adoption rates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where does the speedup actually go?
&lt;/h2&gt;

&lt;p&gt;Into the review queue, first. LinearB's &lt;a href="https://linearb.io/blog/8-million-prs-engineering-productivity" rel="noopener noreferrer"&gt;2026 benchmark study&lt;/a&gt; of 8.1 million pull requests across 4,800 teams in 42 countries found that AI-assisted PRs run about two and a half times larger than unassisted ones at the 75th percentile: over 400 changed lines versus 157. Bigger diffs are harder to verify, so they sit. AI-generated PRs wait more than 16 hours for a reviewer to pick them up, over five times longer than the roughly 200 minutes unassisted work waits. Many never land at all: manual PRs merge at about 84.5%, while AI-generated PRs merge at just 32.7%. &lt;a href="https://www.faros.ai/research/ai-acceleration-whiplash" rel="noopener noreferrer"&gt;Faros AI's 2026 "Acceleration Whiplash" report&lt;/a&gt; sees the same jam from the other side, with median PR review time up 5x and 31% more PRs merging with no review at all. The queue either clogs or gets bypassed, and both outcomes destroy the org-level gain: a jammed queue converts the speed into wait time, and a bypassed one converts it into risk. Note what didn't change: reviewer intent. Nobody decided to review less carefully; the queue simply outgrew the people staffing it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The rework refund
&lt;/h3&gt;

&lt;p&gt;Some of the speedup is not absorbed but borrowed. &lt;a href="https://www.gitclear.com/the_ai_code_quality_maintainability_gap" rel="noopener noreferrer"&gt;GitClear's 2026 maintainability research&lt;/a&gt; found that refactored (moved) code has collapsed to 3.8% of changed lines year-to-date, down from 21% in 2022, while block duplication climbed 81% over 2023 to the highest level on record and error-masking constructs rose 47%. Nobody is paying down the code AI generates; they are stacking more on top, and every duplicated block is a future change that has to be made twice. Defect data completes the loop. Faros AI's telemetry, covering 22,000 developers across 4,000 teams, pairs the individual output gains with the system costs that arrive alongside them:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Change under heavy AI adoption&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Epics completed&lt;/td&gt;
&lt;td&gt;+66.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Task throughput&lt;/td&gt;
&lt;td&gt;+33.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Median PR review time&lt;/td&gt;
&lt;td&gt;5x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incidents per PR&lt;/td&gt;
&lt;td&gt;3x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bugs per PR&lt;/td&gt;
&lt;td&gt;+28%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code churn&lt;/td&gt;
&lt;td&gt;+861%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PRs merged without review&lt;/td&gt;
&lt;td&gt;+31%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Source: Faros AI, AI Engineering Report 2026. The speed you booked this sprint comes back as defect and churn work next sprint. It still shows up on the dashboard, just in the wrong column.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is coding even the bottleneck? (the Amdahl's-law problem)
&lt;/h2&gt;

&lt;p&gt;Mostly no, and this is the arithmetic that makes the whole pattern predictable. Lead time for changes spans design, coding, review, testing, deployment, and the wait states between them; we've written about how &lt;a href="https://getunblocked.com/blog/dora-metrics-ai-era/" rel="noopener noreferrer"&gt;DORA metrics in the AI era&lt;/a&gt; capture that full span. If coding is roughly 20 to 30 percent of lead time, Amdahl's law says an infinite coding speedup caps total improvement around 25 to 40 percent, and a realistic speedup on that slice produces single-digit gains at the org level. Those numbers are illustrative rather than measured, but the shape is not, and it caps AI coding productivity at scale hardest in large organizations where wait states dominate: AI accelerates the smallest slice of lead time. A 2026 arXiv analysis of &lt;a href="https://arxiv.org/abs/2605.01160" rel="noopener noreferrer"&gt;the productivity-reliability paradox&lt;/a&gt; makes the same point with telemetry showing 98% more pull requests, 91% longer review times, and flat delivery metrics, concluding that "specification discipline, not model capability, is the binding constraint" on dependable AI-assisted delivery. Pushing more input into a saturated queue raises inventory, not throughput.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do coordination costs do to team throughput?
&lt;/h2&gt;

&lt;p&gt;They eat a share of it that grows with headcount. Faros AI's core 2026 finding is the whiplash itself: a delivery system built around human-paced code production, suddenly flooded with output it was never designed to absorb. More output per individual means more merge conflicts, a larger integration surface, and more decisions that have to be synchronized across people who are each moving faster alone. Someone absorbs that load. &lt;a href="https://leaddev.com/the-engineering-leadership-report-2026" rel="noopener noreferrer"&gt;LeadDev's Engineering Leadership Report 2026&lt;/a&gt; found 37% of engineering leaders doing more hands-on technical work than the year before; the leaders became the shock absorbers. Developer-experience surveys keep finding the same wash: the hours AI saves roughly cancel against new hours lost to friction elsewhere in the system. And culture decides how much throughput survives the collision. &lt;a href="https://newsletter.pragmaticengineer.com/p/ai-impact-on-software-engineers-part-2" rel="noopener noreferrer"&gt;The Pragmatic Engineer's 2026 survey&lt;/a&gt; of 900+ engineers found that teams with strong testing automation and documented decisions convert AI adoption into team gains, while everyone else struggles to. As one staff engineer in that survey put it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"AI is an amplifier, not a fixer. Good software engineering practices get multiplied. So do the bad ones."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The context-hunting tax, multiplied by headcount
&lt;/h3&gt;

&lt;p&gt;Every AI-generated PR asks its reviewer the same questions. Why is the code shaped this way? Which conventions does it follow or violate? Has this approach been tried and rejected before? The answers live in old PRs, design docs, superseded RFCs, and chat threads, and without a system that surfaces them, every reviewer pays that research cost individually, on every diff, and the diffs are arriving larger and faster than ever. Generated code raises more of these questions because no author remembers writing it. That is the verification tax DORA describes, multiplied by headcount. This is where a context engine changes the aggregation math: giving reviewers and agents the reasoning behind the code compresses verification instead of only accelerating generation. Engineers at UserTesting put the swing at 20 to 30 percent of their productivity, depending on whether institutional context is within reach while they and their agents work. Reclaiming the hours engineers lose to context-hunting is, in aggregate, the difference between a speedup that survives review and one that queues behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why isn't AI making my team faster?
&lt;/h3&gt;

&lt;p&gt;Because the constraint moved from writing code to reviewing, integrating, and reworking it. Individual speedups queue up at the stages AI didn't touch: LinearB's 2026 data shows AI-assisted PRs waiting over five times longer for review pickup than unassisted ones. Until verification capacity grows to match generation capacity, faster coding mostly produces deeper queues, not shorter lead times.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do AI coding tools actually improve velocity?
&lt;/h3&gt;

&lt;p&gt;At the individual level, yes. Faros AI's 2026 telemetry shows task throughput up 33.7% and epics completed up 66.2% under heavy adoption. At the org level, lead time and deploy frequency have stayed mostly flat across 2026 measurements. The gap between those two numbers is absorption cost, not measurement error.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why did our AI pilot results not replicate?
&lt;/h3&gt;

&lt;p&gt;Pilots measure the coding slice under ideal conditions: motivated volunteers working greenfield tasks while the review system has spare capacity. A full rollout saturates review and coordination capacity, which the pilot never tested, on a legacy codebase the pilot never touched. The pilot numbers were real; they measured a stage that stops being the constraint the moment everyone speeds up at once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should we measure individual or team-level AI gains?
&lt;/h3&gt;

&lt;p&gt;For AI coding productivity at scale, team-level outcomes are the headline; individual instrumentation is diagnostic. Perception is a poor proxy for either. &lt;a href="https://jellyfish.co/2026-state-of-engineering-management/" rel="noopener noreferrer"&gt;Jellyfish's 2026 State of Engineering Management survey&lt;/a&gt; found that 64% of engineering professionals believe they're getting at least a 25% velocity lift from AI, a belief org-level delivery data rarely confirms at that magnitude. Lead time and rework rates tell you whether the gains actually survived aggregation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Did the individual gains even survive scrutiny?
&lt;/h2&gt;

&lt;p&gt;Increasingly, yes, and the thesis doesn't need them not to. An earlier randomized trial famously found experienced developers slower with AI even as they believed the opposite; we unpacked that result and the perception gap behind it in &lt;a href="https://getunblocked.com/blog/ai-productivity-paradox/" rel="noopener noreferrer"&gt;the AI productivity paradox&lt;/a&gt;. METR's &lt;a href="https://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;February 2026 update&lt;/a&gt; complicates that story in AI's favor: a newer cohort measured a -4% speed effect with a confidence interval spanning -15% to +9%, and the researchers judge it "likely that developers are more sped up from AI tools now" than when the original trial ran, with heavy caveats about selection effects, since developers increasingly declined to participate in trials that would take their AI tools away. Read that as individual gains becoming genuinely real, and probably still understated. It strengthens the argument rather than weakening it, because if keyboard-level speedups are real and org metrics are still flat, the loss is happening in aggregation, exactly where the review, rework, and coordination data says it is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to measure next quarter
&lt;/h2&gt;

&lt;p&gt;Three counter-metrics reveal whether your gains survive aggregation, and none of them is PR count. All three are cheap to instrument and hard to argue with. First, lead time for changes, end to end, because it is the number the whole system has to move together. Second, a 14-day rework window on AI-tagged PRs: what fraction of AI-assisted changes get modified or reverted within two weeks of merging. Third, review pickup time split by AI versus human authorship, which is the earliest warning that your queue is jamming. If you can't yet tag AI-assisted PRs, start there, because both of the latter metrics depend on that split. We cover the instrumentation in &lt;a href="https://getunblocked.com/blog/how-to-measure-ai-productivity/" rel="noopener noreferrer"&gt;how to measure AI productivity&lt;/a&gt;; for a fuller lens, &lt;a href="https://getunblocked.com/blog/context-adjusted-productivity/" rel="noopener noreferrer"&gt;context-adjusted productivity&lt;/a&gt; nets out the verification and coordination costs this piece describes. The 2026 pattern in AI coding productivity at scale is consistent across every dataset above: the teams whose gains survive are the ones that shrank verification. That means putting institutional context where reviewers and agents already work, so the fastest stage of your pipeline stops waiting on the slowest.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>engineering</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Why Claude Code Invents Functions Your Codebase Doesn't Have</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Wed, 12 Aug 2026 15:00:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/why-claude-code-invents-functions-your-codebase-doesnt-have-37cp</link>
      <guid>https://dev.to/dennis_pilarinos/why-claude-code-invents-functions-your-codebase-doesnt-have-37cp</guid>
      <description>&lt;p&gt;Claude Code invents functions because it predicts the most plausible API name from patterns in its training data, not from an index of your actual code. You watched it happen this morning. You asked the agent to add rate limiting to password resets, and the diff came back clean: &lt;code&gt;const user = await User.findByEmail(email)&lt;/code&gt;, wrapped in a sensible guard clause, with a test that mocks the same method. It reads idiomatically. It sails into the PR. Then your reviewer leaves a single comment: &lt;code&gt;findByEmail&lt;/code&gt; doesn't exist. Your codebase has &lt;code&gt;getUserByEmail&lt;/code&gt;, defined in &lt;code&gt;users/repository.ts&lt;/code&gt; and called from fourteen places, and nothing named &lt;code&gt;findByEmail&lt;/code&gt; has ever been merged into your repo. The agent didn't misread your code. It never read the relevant file at all, and it filled the gap with the name most other codebases would use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does Claude Code call functions that don't exist in my codebase?
&lt;/h2&gt;

&lt;p&gt;Three causes stack up to produce an invented method call.&lt;/p&gt;

&lt;p&gt;First, interpolation. &lt;code&gt;findByEmail&lt;/code&gt; is the dominant convention in the Rails, Spring Data, and Mongoose code the model trained on. When Claude Code needs a user-lookup method and your real signature isn't in front of it, it emits the statistically likely name. Engineers on r/ClaudeAI describe this pattern constantly: the agent references files, functions, and code that don't exist anywhere in the project.&lt;/p&gt;

&lt;p&gt;Second, partial visibility. Claude Code doesn't hold your repository in memory; it greps and reads files on demand. If it never opened &lt;code&gt;users/repository.ts&lt;/code&gt; this session, your actual signature was never in its context window, and prediction is all it has left.&lt;/p&gt;

&lt;p&gt;Third, convention drift. Your internal APIs are by definition rare or absent in training data, and fabrication concentrates exactly where the model has seen a name least often. A 2026 re-evaluation of frontier models found five different models inventing &lt;a href="https://arxiv.org/abs/2605.17062" rel="noopener noreferrer"&gt;127 identical package names&lt;/a&gt;. That is what systematic interpolation looks like: the same wrong answer, reproduced deterministically, by models trained separately.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bottom line:&lt;/strong&gt; Claude Code doesn't look up your API before naming it; it predicts a plausible name from ecosystem-wide patterns. The more your internal conventions differ from open-source norms, the more it invents. Rules files reduce the problem, and only grounding the agent in your real signatures and call sites stops it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How often do coding agents invent APIs?
&lt;/h2&gt;

&lt;p&gt;The cleanest 2026 numbers come from package hallucination, because a package's existence can be checked against a registry. A May 2026 study re-evaluated five frontier models, including Claude Sonnet 4.6 and Claude Haiku 4.5, on &lt;a href="https://arxiv.org/abs/2605.17062" rel="noopener noreferrer"&gt;199,845 Python and JavaScript prompts&lt;/a&gt; and found that between 4.62% and 6.10% of generations referenced packages that don't exist. Newer models shrank the range, but nobody got near zero, and 127 fabricated names were shared across all five models. The overlap matters more than the rate: the failure comes from how these models generalize, and no single vendor is going to patch it away.&lt;/p&gt;

&lt;p&gt;Developers feel this. Stack Overflow's &lt;a href="https://stackoverflow.blog/2026/02/18/closing-the-developer-ai-trust-gap/" rel="noopener noreferrer"&gt;February 2026 analysis&lt;/a&gt; of its survey data shows adoption and confidence moving in opposite directions: over 84% of developers use or plan to use AI tools, while only 29% say they trust AI, down 11 points year over year.&lt;/p&gt;

&lt;p&gt;Internal-API invention is the same mechanism pointed at your codebase, with one difference. When a model invents a package, &lt;code&gt;npm install&lt;/code&gt; fails loudly. When it invents &lt;code&gt;findByEmail&lt;/code&gt;, nothing fails until the type checker, the reviewer, or production.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does an invented function look like in the wild?
&lt;/h2&gt;

&lt;p&gt;Reports of Claude Code hallucinations converge on the same shape: confident code, plausible name, missing referent. In January 2026, a developer documented Claude generating file-upload code around a Prisma method called &lt;code&gt;$upload&lt;/code&gt;. The generated code was confident and tidy; the runtime verdict was &lt;a href="https://31daysofvibecoding.com/2026/01/14/when-ai-hallucinates/" rel="noopener noreferrer"&gt;&lt;code&gt;TypeError: prisma.$upload is not a function&lt;/code&gt;&lt;/a&gt;. Prisma has no &lt;code&gt;$upload&lt;/code&gt; method. The model invented it whole.&lt;/p&gt;

&lt;p&gt;Claude Code's own issue tracker shows the family of failures: users report the agent &lt;a href="https://github.com/anthropics/claude-code/issues/56690" rel="noopener noreferrer"&gt;pausing long-running tasks over hallucinated missing dependencies&lt;/a&gt; and &lt;a href="https://github.com/anthropics/claude-code/issues/36810" rel="noopener noreferrer"&gt;making unverified assumptions instead of checking actual state&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then there's the security tail. Invented names are so consistent that attackers pre-register them. In January 2026, Aikido Security claimed the npm name &lt;code&gt;react-codeshift&lt;/code&gt;, a package that never existed but that &lt;a href="https://www.aikido.dev/blog/agent-skills-spreading-hallucinated-npx-commands" rel="noopener noreferrer"&gt;237 GitHub repositories were already instructing agents to install&lt;/a&gt;. By July, researchers demonstrated &lt;a href="https://thehackernews.com/2026/07/new-hallusquatting-attack-could-trick.html" rel="noopener noreferrer"&gt;"HalluSquatting" attacks&lt;/a&gt; that plant malware behind reliably fabricated repository names, with success rates up to 85%. If invention were random noise, none of this would work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does CLAUDE.md stop Claude Code from making up methods?
&lt;/h2&gt;

&lt;p&gt;Partially, and it's worth doing. CLAUDE.md files give the agent &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;persistent instructions loaded at session start&lt;/a&gt;, so conventions you write down ("user lookups live in &lt;code&gt;users/repository.ts&lt;/code&gt;; never invent repository methods") survive across conversations.&lt;/p&gt;

&lt;p&gt;What they can't do is close the gap. A mid-size repo has thousands of exported symbols, and the set changes with every merged PR, so any rules file that enumerates your API surface is stale by Friday. Nobody maintains a hand-written index of their own code, and CLAUDE.md quietly asks you to. Rules are instructions, not retrieval: when the real signature isn't in context, the model still produces method names by prediction, and Anthropic's own docs are explicit that CLAUDE.md content is context the model tries to follow rather than enforced configuration. Long rules files also pay a context tax every session; the same docs recommend keeping them under 200 lines, which rules out documenting your API there. None of this is CLAUDE.md's fault: &lt;a href="https://getunblocked.com/blog/claude-code-forgets-codebase/" rel="noopener noreferrer"&gt;Claude Code doesn't retain your codebase shape between sessions&lt;/a&gt;, so instructions end up doing a job that only &lt;a href="https://getunblocked.com/blog/rules-files-vs-context-engine/" rel="noopener noreferrer"&gt;retrieval infrastructure can do&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you just paste more of the repo into the context window?
&lt;/h2&gt;

&lt;p&gt;This is the other folk remedy, and it helps less than it looks like it should.&lt;/p&gt;

&lt;p&gt;Scope: pasting &lt;code&gt;users/repository.ts&lt;/code&gt; grounds the agent in exactly that file, for exactly this session. The next invented call will come from a module you didn't paste, and tomorrow's session starts from zero.&lt;/p&gt;

&lt;p&gt;Attention: a repo stuffed into the window still gets skimmed, and a signature the model glossed over might as well not be there. Bigger windows raise the ceiling without changing the behavior, because attending to a million tokens is not the same as looking one symbol up.&lt;/p&gt;

&lt;p&gt;Staleness: the repo mutates under you. Yesterday's paste contains yesterday's signatures, and an agent grounded in last week's snapshot will confidently write calls against methods your team renamed on Tuesday. &lt;a href="https://getunblocked.com/blog/why-cursor-hallucinates-and-forgets-context/" rel="noopener noreferrer"&gt;Cursor has its own version of this failure&lt;/a&gt;, where the same context limits show up as forgetting rather than inventing. Same underlying gap: the agent has a sliver of your code when it needs an index of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually grounds an agent in the code you have?
&lt;/h2&gt;

&lt;p&gt;Retrieval of what actually exists, at the moment the agent is about to write the call: the real signature, the real call sites, and the convention your team settled on. 2026 research converges here. A January 2026 framework parses generated code and validates every reference against a knowledge base built from the actual libraries in use, catching non-existent APIs with &lt;a href="https://arxiv.org/abs/2601.19106" rel="noopener noreferrer"&gt;100% precision and 87.6% recall, and auto-correcting 77% of them&lt;/a&gt;. The principle generalizes: check generation against ground truth instead of hoping prediction lands.&lt;/p&gt;

&lt;p&gt;That's the job Unblocked does for coding agents: it grounds them in what actually exists. It's the context engine coding agents query before they write, and it surfaces real signatures, call sites, and team conventions at the moment of need, along with the decisions behind them from PRs, docs, and chat. When the agent asks what the user-lookup method is called, it gets back &lt;code&gt;getUserByEmail&lt;/code&gt;, the file it lives in, and the discussion where the team standardized on it, instead of a statistically popular guess.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My setup tells the agent: before you implement anything, go check Unblocked. It has everything — our repos, Notion, Slack, coding standards — and it surfaces things I wouldn't have thought to look for. GitHub Copilot doesn't have any of that organizational context. I'd rate the impact an eight or nine out of ten, and it's only gotten better.&lt;/p&gt;

&lt;p&gt;— Justin McCraw, Software Engineer, The Information&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Grounding also raises the question of precedence when sources disagree, which is &lt;a href="https://getunblocked.com/blog/coding-agent-source-of-truth/" rel="noopener noreferrer"&gt;its own problem: which source of truth should the agent trust&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the inventions stop
&lt;/h2&gt;

&lt;p&gt;Three concrete moves, in order of cheapness:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Make "does this symbol exist?" a hard gate.&lt;/strong&gt; A grep or a typecheck in the loop, before the diff lands, catches most invented calls for pennies. If your language has a compiler, run it; if it doesn't, a symbol-existence check in CI is the next best thing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit your CLAUDE.md for retrieval problems wearing rule costumes.&lt;/strong&gt; Every line shaped like "use &lt;code&gt;getUserByEmail&lt;/code&gt;, not &lt;code&gt;findByEmail&lt;/code&gt;" is a patch over a lookup the agent should be doing itself. Keep the conventions; stop trying to enumerate the API surface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give the agent a query path to what exists.&lt;/strong&gt; Signatures, call sites, decisions. An agent that can ask before it writes has no reason to guess, and an agent that can only predict will keep predicting.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The inventions are what generation without grounding looks like, and the next model release won't fix that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why does Claude Code make up functions?
&lt;/h3&gt;

&lt;p&gt;Because it generates the most plausible method name from patterns in its training data rather than looking up your actual API. When the real signature isn't in its context window, ecosystem-wide conventions fill the gap, which is why the invented names (like &lt;code&gt;findByEmail&lt;/code&gt;) sound so reasonable.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I stop my coding agent inventing methods?
&lt;/h3&gt;

&lt;p&gt;Put a symbol-existence check (typecheck, grep, or compile) in the loop before any diff lands, and give the agent retrieval access to your real signatures and call sites so it queries instead of guessing. Rules files help at the margins but don't do retrieval.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does CLAUDE.md stop hallucinations?
&lt;/h3&gt;

&lt;p&gt;It reduces them for the conventions you thought to write down. It can't cover thousands of exported symbols that change every PR, and instructions don't substitute for retrieval: the model still predicts names when the real one isn't in context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is calling a deprecated API the same as inventing one?
&lt;/h3&gt;

&lt;p&gt;No. A deprecated API is &lt;a href="https://getunblocked.com/blog/ai-agent-deprecated-api/" rel="noopener noreferrer"&gt;old but real&lt;/a&gt;: it existed, and the agent's knowledge is out of date. An invented API never existed anywhere. One is a freshness problem, the other a grounding problem, and they need different fixes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does this happen more in big codebases and monorepos?
&lt;/h3&gt;

&lt;p&gt;Yes. Large codebases carry more internal conventions that diverge from open-source norms, and less of their API surface resembles anything in training data. More symbols, more drift, more room for a plausible-but-wrong name. Which is also where symbol checks and grounded retrieval pay off most.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>llm</category>
      <category>programming</category>
    </item>
    <item>
      <title>8 Best Glean Alternatives for Engineering Teams (2026)</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Tue, 11 Aug 2026 16:29:53 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/8-best-glean-alternatives-for-engineering-teams-2026-l6b</link>
      <guid>https://dev.to/dennis_pilarinos/8-best-glean-alternatives-for-engineering-teams-2026-l6b</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://getunblocked.com/blog/glean-alternatives/" rel="noopener noreferrer"&gt;getunblocked.com&lt;/a&gt; on August 11, 2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Unblocked is the top Glean alternative for engineering teams in 2026, and the clearest evidence is what it removes from the calendar: at Fingerprint, VP of Engineering Ekan Subramanian reports his team saves &lt;a href="https://getunblocked.com/customers/" rel="noopener noreferrer"&gt;60 to 70 hours every week&lt;/a&gt; on internal Q&amp;amp;A. Some honesty before the list, though. If what you actually need is generic company-wide enterprise search across HR policies, sales decks, and legal contracts, several of the tools below fit that job better than Unblocked does. Unblocked is the pick when engineering is the team that hurts. Most searches for Glean alternatives start with sticker shock at custom quotes and seat minimums, then land on a second complaint: generic answers to engineering questions. This roundup covers 8 alternatives with real 2026 pricing and honest fit guidance for both situations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Unblocked is the top pick when engineering knowledge is the problem; Fingerprint reports 60 to 70 hours saved per week on internal Q&amp;amp;A.&lt;/li&gt;
&lt;li&gt;Onyx is the best open-source option: MIT-licensed, self-hostable, with a free community edition.&lt;/li&gt;
&lt;li&gt;Atlassian Rovo is the default if you already pay for Jira and Confluence; Notion AI wins if your company runs on Notion.&lt;/li&gt;
&lt;li&gt;Dashworks is the budget pick, with published pricing from $10 per seat per month.&lt;/li&gt;
&lt;li&gt;The deciding question is whether your pain is company-wide document search or engineering context scattered across code, PRs, and Slack.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How do the top Glean alternatives compare on pricing?
&lt;/h2&gt;

&lt;p&gt;Glean does not publish list pricing. Buyer-reported data from &lt;a href="https://www.vendr.com/marketplace/glean" rel="noopener noreferrer"&gt;Vendr&lt;/a&gt; puts the median Glean contract at $98,890 per year across 174 recorded purchases, with minimum commitments that often start around 100 to 250 users. That opacity is a big part of why teams comparison-shop in the first place, so here is the whole field in one table. Every figure below was re-verified against the live vendor pricing page in August 2026.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Starting Price&lt;/th&gt;
&lt;th&gt;Free Tier&lt;/th&gt;
&lt;th&gt;Contract Minimum&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Unblocked&lt;/td&gt;
&lt;td&gt;$19-$29/user/mo (annual, by plan)&lt;/td&gt;
&lt;td&gt;21-day free trial&lt;/td&gt;
&lt;td&gt;None stated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Guru&lt;/td&gt;
&lt;td&gt;Custom / contact sales&lt;/td&gt;
&lt;td&gt;Not published&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Atlassian Rovo&lt;/td&gt;
&lt;td&gt;Included with paid Jira/Confluence plans; Rovo Dev $20/dev/mo&lt;/td&gt;
&lt;td&gt;Rovo credits included in paid plans&lt;/td&gt;
&lt;td&gt;Requires a Jira or Confluence subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notion AI&lt;/td&gt;
&lt;td&gt;Included in Business plan at $20/member/mo&lt;/td&gt;
&lt;td&gt;Limited AI trial on free plan&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dashworks&lt;/td&gt;
&lt;td&gt;$10/seat/mo (annual)&lt;/td&gt;
&lt;td&gt;14-day free trial&lt;/td&gt;
&lt;td&gt;None on Team; 10 seats on Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Onyx&lt;/td&gt;
&lt;td&gt;Free self-hosted; Cloud $20/user/mo (annual)&lt;/td&gt;
&lt;td&gt;Yes, open source&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft 365 Copilot&lt;/td&gt;
&lt;td&gt;$30/user/mo (annual)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Requires a Microsoft 365 subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Gemini Enterprise&lt;/td&gt;
&lt;td&gt;$21/seat/mo (Business edition)&lt;/td&gt;
&lt;td&gt;30-day trial&lt;/td&gt;
&lt;td&gt;Business edition capped at 500 users; larger deployments custom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Glean (reference)&lt;/td&gt;
&lt;td&gt;Custom / contact sales&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;100-250 users reported&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why are engineering teams looking for Glean alternatives in 2026?
&lt;/h2&gt;

&lt;p&gt;Cost is the trigger that starts most comparisons of Glean competitors. A six-figure median contract and triple-digit seat minimums are hard to justify when only one department is in pain. But the complaint that sustains the search is answer quality on engineering questions.&lt;/p&gt;

&lt;p&gt;Enterprise search tools rank documents. Engineering questions rarely live in one document. "Why does the billing service retry three times?" has its answer spread across a PR review thread, a Slack argument, and a config change from 2023. Sonar's &lt;a href="https://www.sonarsource.com/state-of-code-developer-survey-report.pdf" rel="noopener noreferrer"&gt;State of Code developer survey&lt;/a&gt; found developers spend nearly a quarter of their work week on toil like debugging poorly documented legacy code. The same survey names finding information and understanding existing systems among the toil tasks that most hinder productivity. A search box that returns ten links does not reclaim that time; the difference between ranking documents and reasoning over them is the core of the &lt;a href="https://getunblocked.com/blog/context-engine-vs-enterprise-search/" rel="noopener noreferrer"&gt;context engine versus enterprise search&lt;/a&gt; distinction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should you look for in a Glean alternative?
&lt;/h2&gt;

&lt;p&gt;Six criteria separate the field:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source coverage: does it read code, PRs, and review threads as first-class sources, or only docs and wikis?&lt;/li&gt;
&lt;li&gt;Answer quality: does it synthesize an answer with citations, or return a ranked list of links?&lt;/li&gt;
&lt;li&gt;Permissions: does it enforce the source system's access controls automatically?&lt;/li&gt;
&lt;li&gt;Deployment speed: days or quarters?&lt;/li&gt;
&lt;li&gt;Pricing transparency: published numbers or a sales call?&lt;/li&gt;
&lt;li&gt;Scope: engineering-specific depth or company-wide breadth?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last criterion is where this market actually forks. If legal, HR, and sales all need search, shortlist the generic tools: Copilot, Gemini Enterprise, Dashworks. If the expensive questions come from engineers, you want a &lt;a href="https://getunblocked.com/blog/what-is-a-context-engine/" rel="noopener noreferrer"&gt;context engine&lt;/a&gt;, which is a different category than search, not a nicer version of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the best Glean alternatives for engineering teams?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Unblocked: best for engineering teams
&lt;/h3&gt;

&lt;p&gt;Unblocked is a context engine for engineering teams, not a company-wide search box. It connects code, pull requests, Slack, Jira, Notion, and Confluence, then reasons across them to answer the questions search can't: why a system works the way it does, what was tried before, who decided. Answers are grounded in code, PRs, and the discussions around them rather than in documents alone, which is why it can serve as institutional memory for teams whose real knowledge never made it into a wiki. The same context layer also powers its AI code review, so the tool that answers your questions is grounded in the same history that reviews your pull requests.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Unblocked brings everything together. You don't have to go digging through tools. It just works.&lt;/p&gt;

&lt;p&gt;— Wade Bruce, CTO, Fetch&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The proof points are concrete: Fingerprint's 60 to 70 hours per week saved on Q&amp;amp;A, and pricing published at &lt;a href="https://getunblocked.com/pricing/" rel="noopener noreferrer"&gt;$19 to $29 per user per month&lt;/a&gt; depending on plan, with a 21-day free trial and no stated seat minimum.&lt;/p&gt;

&lt;p&gt;The honest limit: Unblocked is deliberately not trying to index your HR handbook. If you need one tool for legal, sales, and engineering content, a generic option below fits better. For the direct feature-by-feature matchup, see the full &lt;a href="https://getunblocked.com/blog/unblocked-vs-glean/" rel="noopener noreferrer"&gt;Unblocked vs Glean comparison&lt;/a&gt;, or the &lt;a href="https://getunblocked.com/blog/unblocked-vs-glean-vs-augment/" rel="noopener noreferrer"&gt;three-way comparison with Augment&lt;/a&gt; if coding assistants are also on your list.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Guru: best for verified company wikis
&lt;/h3&gt;

&lt;p&gt;Guru is a wiki and search hybrid whose distinctive feature is verification: subject-matter experts get prompted on a schedule to re-confirm that cards are still accurate, so answers carry a "verified" stamp with a name attached. For teams whose problem is stale, contradictory documentation, that workflow is genuinely useful, and Guru's AI answers inherit the trust of the verified content underneath.&lt;/p&gt;

&lt;p&gt;The tradeoff is source depth on the engineering side. Guru reads knowledge that people wrote down; it is weaker on code, pull requests, and the discussion threads where engineering decisions actually happen. Pricing has also moved away from self-serve: Guru &lt;a href="https://www.getguru.com/pricing" rel="noopener noreferrer"&gt;no longer publishes tiered pricing&lt;/a&gt; and instead scopes each contract through a sales consultation, which puts it in the same opaque bucket as Glean on the transparency criterion.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Atlassian Rovo: best if you already live in Jira and Confluence
&lt;/h3&gt;

&lt;p&gt;Rovo is Atlassian's AI search and agent layer, and its pitch is that you may already own it: Rovo is &lt;a href="https://www.atlassian.com/software/rovo/pricing" rel="noopener noreferrer"&gt;included with Standard, Premium, and Enterprise cloud plans&lt;/a&gt; for Jira and Confluence, with usage metered in Rovo credits instead of a separate per-seat fee. Rovo Dev, the developer-focused agent, is priced separately at &lt;a href="https://www.atlassian.com/software/rovo/pricing" rel="noopener noreferrer"&gt;$20 per developer per month&lt;/a&gt; with 2,000 credits included.&lt;/p&gt;

&lt;p&gt;If your team's knowledge already lives in Atlassian's ecosystem, that bundling makes Rovo the cheapest experiment on this list. The limit is the flip side: Rovo is strongest inside Atlassian's own graph. Connectors reach outward, but teams whose critical context lives in Slack threads and GitHub review comments will find the answers thinner there, and you cannot buy Rovo without the underlying Atlassian subscription.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Notion AI: best for Notion-centric teams
&lt;/h3&gt;

&lt;p&gt;Notion AI answers questions across your Notion workspace and connected apps, and its economics are simple: AI is &lt;a href="https://www.notion.com/pricing" rel="noopener noreferrer"&gt;included in the Business plan at $20 per member per month&lt;/a&gt;, with a limited trial on the free plan. For companies that already run their docs, projects, and meeting notes in Notion, that means enterprise Q&amp;amp;A arrives as a plan upgrade rather than a new procurement cycle.&lt;/p&gt;

&lt;p&gt;The boundary is Notion's orbit. Knowledge inside the workspace is well served; knowledge outside it, especially code and pull requests, is second-class. Notion AI can search some connected tools, but it does not reason over a repository's history or a review thread's back-and-forth. Treat it as the answer layer for the company wiki rather than for the engineering org's tribal knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Dashworks: best budget AI search assistant
&lt;/h3&gt;

&lt;p&gt;Dashworks is a Slack-first AI search assistant with the most approachable pricing on this list: the Team plan runs &lt;a href="https://www.dashworks.ai/pricing" rel="noopener noreferrer"&gt;$10 per seat per month billed annually&lt;/a&gt; ($12 monthly), with a 14-day free trial, no credit card, and no seat minimum. The Business tier adds custom bots and org-wide integrations at $12 per seat annually with a 10-seat minimum. Setup is fast because it works where your team already asks questions.&lt;/p&gt;

&lt;p&gt;What you give up is depth. Dashworks federates search across connected apps and drafts answers from what it finds, which works well for support-style questions with a documented answer. It is lighter on reasoning over engineering artifacts, so "why" questions that span a PR, a Slack thread, and a config change will stretch it. As a low-risk pilot for general-purpose AI search, it is the easiest start here.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Onyx: best open-source alternative
&lt;/h3&gt;

&lt;p&gt;Onyx (formerly Danswer) is the self-hosting route: the community edition is &lt;a href="https://github.com/onyx-dot-app/onyx" rel="noopener noreferrer"&gt;MIT-licensed and free&lt;/a&gt; with more than 50 connectors out of the box, and the managed cloud offering runs &lt;a href="https://www.onyx.app/pricing" rel="noopener noreferrer"&gt;$20 per user per month billed annually&lt;/a&gt;. For organizations where data residency or air-gapped deployment is non-negotiable, it is the only credible option on this list, since everything can run inside your own VPC.&lt;/p&gt;

&lt;p&gt;The cost shows up in operations instead of licensing. You own the upgrades, the index, the model configuration, and the connector maintenance, and that adds up to a real engineering commitment. Answer quality also depends heavily on how well you tune it. Choose Onyx when control is the requirement; choose a managed tool when speed matters more.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Microsoft 365 Copilot: best for Microsoft-first enterprises
&lt;/h3&gt;

&lt;p&gt;Microsoft 365 Copilot costs &lt;a href="https://www.microsoft.com/en-us/microsoft-365/copilot/enterprise" rel="noopener noreferrer"&gt;$30 per user per month billed annually&lt;/a&gt;, on top of a qualifying Microsoft 365 subscription. What you get is permission-aware search and chat across the Microsoft Graph: SharePoint, Teams, Outlook, OneDrive, and the Office apps themselves. For an enterprise standardized on Microsoft, that is a huge surface area with governance already handled, and procurement is an add-on to a contract you already have.&lt;/p&gt;

&lt;p&gt;Coverage thins quickly outside that graph. Connectors exist for third-party sources, but the experience is built around Microsoft's own estate, and engineering systems like GitHub (despite shared ownership), Jira, and Slack sit outside the default value. If your knowledge lives in Office documents and Teams messages, Copilot is the obvious pick; if it lives in repos and review threads, it is a complement rather than an answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Google Gemini Enterprise: best for Google Cloud shops
&lt;/h3&gt;

&lt;p&gt;Gemini Enterprise is Google's entry, launched in late 2025 as the successor to Agentspace. Pricing is published: the &lt;a href="https://cloud.google.com/gemini-enterprise" rel="noopener noreferrer"&gt;Business edition starts at $21 per seat per month&lt;/a&gt; for teams of up to 500 users with a 30-day trial, and Standard and Plus editions start at $30 per seat through sales. The agent platform underneath adds usage-based billing for compute and storage, so total cost scales with how heavily you build on it.&lt;/p&gt;

&lt;p&gt;The fit is Google-shaped: Workspace content, BigQuery, and Google Cloud services are first-class, and the agent-building tooling is further along than most rivals'. The caution is maturity. The platform has been renamed and rebundled within the last year, larger contracts remain custom-quoted, and the usage-based components make budgeting less predictable than a flat per-seat tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you choose between them?
&lt;/h2&gt;

&lt;p&gt;Match the tool to your situation instead of the feature grid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Engineering knowledge is the pain: Unblocked.&lt;/li&gt;
&lt;li&gt;You already pay Atlassian: try Rovo first, since the credits are bundled.&lt;/li&gt;
&lt;li&gt;Company runs on Notion: Notion AI is one plan upgrade away.&lt;/li&gt;
&lt;li&gt;Self-hosting is mandatory: Onyx, and budget the ops time honestly.&lt;/li&gt;
&lt;li&gt;Microsoft or Google estate: Copilot or Gemini Enterprise respectively.&lt;/li&gt;
&lt;li&gt;Small budget, general-purpose need: Dashworks.&lt;/li&gt;
&lt;li&gt;Documentation trust is the real problem: Guru.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Price the shortlist with the table above, remembering that the bundled options (Rovo, Notion AI, Copilot) are only cheap if you already pay for the platform underneath. If several tools tie, source coverage should break the tie; our roundup of &lt;a href="https://getunblocked.com/blog/best-ai-tools-for-engineering-teams/" rel="noopener noreferrer"&gt;AI tools for engineering teams&lt;/a&gt; goes deeper on evaluating that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the best Glean alternative for engineering teams?
&lt;/h3&gt;

&lt;p&gt;Unblocked. It reasons across code, PRs, Slack, Jira, Notion, and Confluence rather than ranking documents, and customers report large concrete savings: Fingerprint's VP of Engineering cites &lt;a href="https://getunblocked.com/customers/" rel="noopener noreferrer"&gt;60 to 70 hours per week&lt;/a&gt; recovered from internal Q&amp;amp;A. For a feature-level breakdown, read the &lt;a href="https://getunblocked.com/blog/unblocked-vs-glean/" rel="noopener noreferrer"&gt;Unblocked vs Glean comparison&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is there a free or open-source alternative to Glean?
&lt;/h3&gt;

&lt;p&gt;Yes. Onyx is &lt;a href="https://github.com/onyx-dot-app/onyx" rel="noopener noreferrer"&gt;MIT-licensed&lt;/a&gt; and free to self-host, with a managed cloud tier at $20 per user per month. If you already pay for Jira or Confluence, Atlassian Rovo is effectively free to try since credits are bundled with paid plans. Notion's free plan includes a limited Notion AI trial.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much does Glean cost compared to alternatives?
&lt;/h3&gt;

&lt;p&gt;Glean is custom-quote only. &lt;a href="https://www.vendr.com/marketplace/glean" rel="noopener noreferrer"&gt;Vendr's buyer data&lt;/a&gt; shows a median contract of $98,890 per year, with minimums often reported between 100 and 250 users. The alternatives here publish prices from $10 to $30 per user per month, and several (Rovo, Notion AI) are bundled into subscriptions you may already carry.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between enterprise search and a context engine?
&lt;/h3&gt;

&lt;p&gt;Enterprise search indexes documents and ranks them against your query; a context engine connects code, PRs, and conversations, then reasons across them to produce an answer with sources. Search tells you where information might be; a context engine tells you why things are the way they are. The &lt;a href="https://getunblocked.com/blog/context-engine-vs-enterprise-search/" rel="noopener noreferrer"&gt;full comparison&lt;/a&gt; walks through the architecture behind that difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shortlisting for your evaluation
&lt;/h2&gt;

&lt;p&gt;A practical shortlist has three tools on it: one engineering-specific option (Unblocked), one from the ecosystem you already pay for (Rovo, Copilot, Notion AI, or Gemini Enterprise), and one wildcard (Onyx if self-hosting matters, Dashworks if budget does). Then run the same test on all three: pull the last ten real questions from your team's Slack history, ask each trial verbatim, and score the answers against what a senior engineer would say. That test is hard to game, and it is where the gap between ranking documents and reasoning over engineering context shows up. If engineering is the team that hurts, &lt;a href="https://getunblocked.com/" rel="noopener noreferrer"&gt;start a free trial of Unblocked&lt;/a&gt; and run those ten questions against your own repos and Slack first.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>productivity</category>
      <category>enterprise</category>
    </item>
    <item>
      <title>What Is Context Rot? Why AI Agents Degrade Mid-Session</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Tue, 11 Aug 2026 16:29:20 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/what-is-context-rot-why-ai-agents-degrade-mid-session-1ak5</link>
      <guid>https://dev.to/dennis_pilarinos/what-is-context-rot-why-ai-agents-degrade-mid-session-1ak5</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://getunblocked.com/blog/what-is-context-rot/" rel="noopener noreferrer"&gt;getunblocked.com&lt;/a&gt; on August 10, 2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Context rot is the gradual degradation of an LLM's output quality as its context grows — the model starts missing, misreading, or ignoring information that is still right there in the window. It sets in long before the window is full, and it is the usual reason an agent that felt sharp for the first hour starts fumbling in the second. Nothing broke, and no data was lost. The model is simply using its own context worse than it did at the start of the session.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; An LLM's output quality decays as its context window fills, even though the information it needs is still present in the window. The cause is a finite attention budget, not finite memory: every token in the window competes for the model's attention. The fix is to curate what enters the context instead of enlarging the window.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is context rot?
&lt;/h2&gt;

&lt;p&gt;Context rot is the decline in a model's ability to accurately use information already sitting in its context window as the token count grows. Instructions get dropped and recall turns fuzzy even though every relevant token remains technically available to the model.&lt;/p&gt;

&lt;p&gt;The term came out of long-context recall research and has since become standard engineering vocabulary; Anthropic's own model documentation now defines it by name. It is distinct from hallucination, which is fabrication and can happen at any context length, and from model staleness, which is about training data ending at a cutoff date. Rot is specific to what happens inside a single growing session.&lt;/p&gt;

&lt;p&gt;It matters because degraded output has a human price. In Sonar's 2026 State of Code survey of more than 1,100 developers, &lt;a href="https://www.sonarsource.com/blog/state-of-code-developer-survey-report-the-current-reality-of-ai-coding/" rel="noopener noreferrer"&gt;96% said they do not fully trust AI-generated code, and only 48% always verify it before committing&lt;/a&gt;. A rotting session produces exactly the kind of output that deepens that verification burden.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does context rot happen?
&lt;/h2&gt;

&lt;p&gt;Attention is a budget. A transformer relates every token in the window to every other token, and the attention any single fact receives shrinks as the pool grows. Anthropic's &lt;a href="https://platform.claude.com/docs/en/build-with-claude/context-windows" rel="noopener noreferrer"&gt;context window documentation&lt;/a&gt; is blunt about the consequence: more context is not automatically better, because accuracy and recall degrade as token count climbs. The window is working memory, and working memory gets crowded.&lt;/p&gt;

&lt;p&gt;Position matters too. Models are trained mostly on shorter sequences, so they weight the beginning and end of the window more reliably than the middle. Material buried mid-window, like the design decision from forty minutes ago or the constraint stated once inside a long file dump, is the first to fade. OpenAI's &lt;a href="https://developers.openai.com/api/docs/guides/prompt-engineering" rel="noopener noreferrer"&gt;prompt engineering guidance&lt;/a&gt; likewise recommends keeping the content you reuse across requests at the beginning of the prompt.&lt;/p&gt;

&lt;p&gt;Then there is noise. A long agent session accumulates stale tool output and abandoned approaches, all of it competing for attention with the tokens that actually matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does it look like in an agent session?
&lt;/h2&gt;

&lt;p&gt;The symptoms are easy to recognize once you map them to their causes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forgotten instructions. Rules from your instruction file stop being applied mid-session. That is mid-window loss: the rules are still present, but attention has moved elsewhere.&lt;/li&gt;
&lt;li&gt;Contradicted decisions. The agent agreed to an approach an hour ago and now argues for the opposite, because the original discussion has faded.&lt;/li&gt;
&lt;li&gt;Repeated work. It re-reads files or re-runs checks it already completed, a sign its recall of session history has degraded.&lt;/li&gt;
&lt;li&gt;Confident misquotes. It describes a function or config it read earlier and gets the contents wrong while sounding certain.&lt;/li&gt;
&lt;li&gt;Trial-and-error drift. Precise, reasoned edits give way to guess-and-check loops as reasoning quality drops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bloated instruction files accelerate all of this, because &lt;a href="https://getunblocked.com/blog/audit-fix-bloated-claude-md/" rel="noopener noreferrer"&gt;every preloaded rule spends attention budget before real work begins&lt;/a&gt;. And the burden lands on people: The Register's coverage of the Sonar survey notes that &lt;a href="https://www.theregister.com/software/2026/01/09/devs-doubt-ai-written-code-but-dont-always-check-it/4932910" rel="noopener noreferrer"&gt;95% of developers spend at least some effort reviewing AI output, and 59% rate that effort moderate or substantial&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why does my agent get worse the longer it runs?
&lt;/h3&gt;

&lt;p&gt;Because every turn adds tokens, in the form of tool output, diffs, and logs, and every added token dilutes the attention available to everything else. Small per-step errors then stack rather than average out, which is why 2026 work &lt;a href="https://arxiv.org/pdf/2602.16666" rel="noopener noreferrer"&gt;toward a science of AI agent reliability&lt;/a&gt; proposes measuring agents on consistency and robustness across runs alongside single-attempt success. Session length itself is the risk factor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does a bigger context window fix it?
&lt;/h3&gt;

&lt;p&gt;No. A larger window raises the ceiling on how much you can load, but degradation begins well before any advertised limit, so extra capacity mostly gives the decay more room to operate. The fuller answer is in the next section.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is context rot the same as hallucination?
&lt;/h3&gt;

&lt;p&gt;No. Hallucination is fabrication: the model invents information it never had, and it can occur in a ten-line prompt. Rot degrades the model's handling of information it does have, and it worsens with length. They do interact: a rotted session hallucinates more, because weak recall gets papered over with plausible invention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you fix it by restarting the session?
&lt;/h3&gt;

&lt;p&gt;Partly. A fresh session drops the accumulated noise, but it also drops legitimate context, including the decisions and constraints you established along the way. Teams square this with retrieval on demand, using a context engine such as Unblocked to pull the relevant history back in when it is needed instead of hoping the window still holds it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does a bigger context window fix context rot?
&lt;/h2&gt;

&lt;p&gt;Advertised windows keep growing; &lt;a href="https://platform.claude.com/docs/en/about-claude/models/overview" rel="noopener noreferrer"&gt;Anthropic's current models accept up to a million tokens&lt;/a&gt;. Effective context has not kept pace. Output quality degrades well before the advertised limit, which is why practitioners treat effective context as a fraction of the number on the spec sheet rather than the number itself.&lt;/p&gt;

&lt;p&gt;For agents, the problem compounds. Suppose degradation drags an agent from near-perfect down to 85% reliability on each individual step. Run ten dependent steps and the chance of a clean end-to-end run is 0.85 to the tenth power, roughly 20%. That is only arithmetic, but it explains why long sessions fail in slow motion. It is also why &lt;a href="https://arxiv.org/pdf/2603.29231" rel="noopener noreferrer"&gt;2026 evaluation research argues that single-attempt benchmarks hide how agents decay across long horizons&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A bigger window lets you load more, and that is all it does. What fits in the window and &lt;a href="https://getunblocked.com/blog/claude-code-context-window/" rel="noopener noreferrer"&gt;what the model can actually use are different questions&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is context rot the same as running out of context?
&lt;/h2&gt;

&lt;p&gt;No, and glossaries routinely blur the two. Running out of context is overflow: the session hits the window's hard limit and something visible happens, such as truncation, a compaction pass, or an error. Rot is quieter. It happens mid-window, with room to spare and every token still present; the model just uses them worse.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Context overflow&lt;/th&gt;
&lt;th&gt;Context rot&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Session hits the hard token limit&lt;/td&gt;
&lt;td&gt;Window still has room to spare&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Old content is truncated or summarized away&lt;/td&gt;
&lt;td&gt;All content is still present in the window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Announces itself with warnings or errors&lt;/td&gt;
&lt;td&gt;Silent; visible only as declining quality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed by trimming or splitting sessions&lt;/td&gt;
&lt;td&gt;Managed by curating what enters at all&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The distinction changes the remedy. Overflow is a capacity problem you can schedule around. Rot is a quality problem that starts the moment the window begins filling, which is why the fixes below focus on curation rather than compression.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does it hit hardest?
&lt;/h2&gt;

&lt;p&gt;Long-horizon coding agents, by a wide margin. An agentic loop stacks tool output on tool output: file reads, diffs, test logs, shell results. Most of it is single-use noise the moment the step completes, yet all of it stays in the window. Sessions that run for hours accumulate exactly the conditions rot needs.&lt;/p&gt;

&lt;p&gt;Tooling overhead makes it worse. Connect a handful of MCP servers and &lt;a href="https://getunblocked.com/blog/mcp-tool-overload/" rel="noopener noreferrer"&gt;their schemas can consume a meaningful slice of the window before the first real task token arrives&lt;/a&gt;. The budget gets spent on plumbing.&lt;/p&gt;

&lt;p&gt;This tracks the broader reliability picture: the &lt;a href="https://arxiv.org/abs/2602.21012" rel="noopener noreferrer"&gt;International AI Safety Report 2026&lt;/a&gt; treats the dependable behavior of general-purpose AI systems as an open scientific problem. If you run Claude Code, we have a field guide to &lt;a href="https://getunblocked.com/blog/context-rot-claude-code/" rel="noopener noreferrer"&gt;context rot in Claude Code specifically&lt;/a&gt;, including where in a session it tends to bite.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do teams prevent it?
&lt;/h2&gt;

&lt;p&gt;Four categories of mitigation hold up across tools:&lt;/p&gt;

&lt;p&gt;Curate what enters. Prune instruction files down to the rules the agent actually violates without them. Trim tool inventories and schemas. Treat every preloaded token as attention already spent.&lt;/p&gt;

&lt;p&gt;Reset at phase boundaries. Finish planning, then start implementation in a fresh session that carries forward a short summary instead of the full transcript. You keep the conclusions and shed the noise.&lt;/p&gt;

&lt;p&gt;Isolate side tasks. Send research and exploratory work to a separate session or subagent so its intermediate output never pollutes the main thread. Only the distilled answer comes back.&lt;/p&gt;

&lt;p&gt;Retrieve on demand. Instead of preloading everything an agent might need, fetch what it needs at the moment it needs it. This is where a context engine fits: Unblocked, the context engine for engineering, resolves the relevant PR thread, doc, or past decision when the question comes up, so the window carries answers rather than archives.&lt;/p&gt;

&lt;p&gt;Getting agents to manage this budget themselves is an active research area; &lt;a href="https://arxiv.org/pdf/2607.00692" rel="noopener noreferrer"&gt;Self-GC&lt;/a&gt;, from 2026, has agents governing their own context on long-horizon tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to spot it in your own sessions
&lt;/h2&gt;

&lt;p&gt;Run a quick three-item self-check on any session that has been running for a while:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The agent re-asks questions you already answered.&lt;/li&gt;
&lt;li&gt;It contradicts a decision the two of you settled earlier.&lt;/li&gt;
&lt;li&gt;Output quality falls off a cliff right after a long stretch of tool output or file dumps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Any one of these means the window is working against you, and the answer is rarely a bigger model or a bigger window. Rot is a curation problem, not a capacity problem: sessions stay sharp when the context contains what the current step needs and little else. That discipline can be manual, or it can come from tooling that retrieves context on demand, which is &lt;a href="https://getunblocked.com/blog/inside-the-unblocked-context-engine/" rel="noopener noreferrer"&gt;the job we built Unblocked to do&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Why Does Your Coding Agent Keep Using Deprecated APIs? (And How to Stop It)</title>
      <dc:creator>Dennis Pilarinos</dc:creator>
      <pubDate>Tue, 11 Aug 2026 16:29:00 +0000</pubDate>
      <link>https://dev.to/dennis_pilarinos/why-does-your-coding-agent-keep-using-deprecated-apis-and-how-to-stop-it-1mik</link>
      <guid>https://dev.to/dennis_pilarinos/why-does-your-coding-agent-keep-using-deprecated-apis-and-how-to-stop-it-1mik</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://getunblocked.com/blog/ai-agent-deprecated-api/" rel="noopener noreferrer"&gt;getunblocked.com&lt;/a&gt; on August 7, 2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your coding agent keeps using deprecated APIs for two reasons, and neither one is fixable with a sterner prompt. First, its training data is frozen in the past: every model ships with a knowledge cutoff, so a deprecation your team announced in March simply doesn't exist in the model's head. Second, its retrieval can't tell current from stale. Your codebase still contains the old pattern in a hundred call sites, your wiki still documents it, and an example file from 2023 still demonstrates it beautifully. The agent takes the first plausible match, and the first plausible match is usually the old one, because old code outnumbers new code in almost every repository on earth.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The short version: your agent isn't stubborn, it's outdated by construction. Its training predates your deprecation, and nothing in its retrieval ranks a three-year-old example file below last month's migration PR. Until something ranks sources of truth by recency and authority, it will keep reaching for the pattern it has seen most often.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why do agents reach for deprecated code at all?
&lt;/h2&gt;

&lt;p&gt;Because the old API dominates everything the model has ever seen. Anthropic publishes a training data cutoff for every Claude model, and even distinguishes it from a "reliable knowledge cutoff," the date through which knowledge is most trustworthy (&lt;a href="https://platform.claude.com/docs/en/about-claude/models/overview" rel="noopener noreferrer"&gt;Anthropic model docs&lt;/a&gt;). OpenAI does the same for GPT models (&lt;a href="https://developers.openai.com/api/docs/models" rel="noopener noreferrer"&gt;OpenAI model docs&lt;/a&gt;). Anything deprecated after those dates is invisible to the weights, and the gap is bigger than it looks: a model released this summer can be confidently wrong about a library that changed before you finished reading its launch post.&lt;/p&gt;

&lt;p&gt;Frequency makes it worse. An API that lived for five years has five years of tutorials, Stack Overflow answers, and blog posts behind it; its replacement has a few months. Stack Overflow's own analysis of the developer AI trust gap lists "methods that were deprecated years ago" among the most common failure modes developers report, alongside APIs that never existed at all (&lt;a href="https://stackoverflow.blog/2026/02/18/closing-the-developer-ai-trust-gap/" rel="noopener noreferrer"&gt;Stack Overflow, 2026&lt;/a&gt;). When the model emits deprecated code, it's doing exactly what its training distribution taught it to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does an agent decide which API version to trust?
&lt;/h2&gt;

&lt;p&gt;It doesn't decide. It satisfices. When your agent needs to call your billing service, it searches, finds something that compiles, and moves on. The wiki says one thing, the code says another, and an old example file says a third, and nothing in the loop ranks those against each other. This is &lt;a href="https://getunblocked.com/blog/satisfaction-of-search/" rel="noopener noreferrer"&gt;satisfaction of search&lt;/a&gt; in action: the agent stops at the first plausible answer, not the best one. Ask for a new webhook handler and it models it on whichever existing handler it found first. If that's deprecated code, you now have one more copy of it.&lt;/p&gt;

&lt;p&gt;That's why the &lt;a href="https://getunblocked.com/blog/same-prompt-same-model-different-context/" rel="noopener noreferrer"&gt;same prompt on the same model produces different code&lt;/a&gt; depending on which files happen to land in context. The deprecation decision exists, but it lives in a Slack thread and a merged PR, exactly &lt;a href="https://getunblocked.com/blog/what-your-coding-agent-cant-see/" rel="noopener noreferrer"&gt;where your coding agent can't see&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why doesn't a bigger context window solve it?
&lt;/h2&gt;

&lt;p&gt;Stuffing everything into a million-token window makes the ranking problem worse, not better. Anthropic's own docs are blunt about it: more context isn't automatically better, because accuracy and recall degrade as token count grows, a phenomenon they name context rot (&lt;a href="https://platform.claude.com/docs/en/build-with-claude/context-windows" rel="noopener noreferrer"&gt;Anthropic context docs&lt;/a&gt;). We've written about how that plays out in practice in &lt;a href="https://getunblocked.com/blog/context-rot-claude-code/" rel="noopener noreferrer"&gt;Claude Code sessions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The independent numbers back this up. Zylos Research's 2026 survey of long-context evaluation found models typically become unreliable 30-40% before their claimed context limit, and attributes nearly 65% of 2025 enterprise AI failures to context drift or memory loss during multi-step reasoning (&lt;a href="https://zylos.ai/research/2026-01-19-llm-context-management/" rel="noopener noreferrer"&gt;Zylos, 2026&lt;/a&gt;). If you paste the old docs, the new docs, and the migration guide into one giant prompt, you haven't told the agent which one wins. You've just given it more plausible matches to satisfice against. The window is working memory, not a source of truth, and something upstream still has to decide what deserves the space.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does shipping deprecated code actually cost?
&lt;/h2&gt;

&lt;p&gt;It compounds. GitClear's 2026 analysis of 623 million code changes found duplicated blocks up 81% since 2023, while moved code, its proxy for refactoring, fell to 3.8% of changed lines (&lt;a href="https://www.gitclear.com/the_ai_code_quality_maintainability_gap" rel="noopener noreferrer"&gt;GitClear, 2026&lt;/a&gt;). Every time an agent copies a deprecated pattern into a new file, it adds one more stale call site for the next agent to find and imitate. Multiply that across a team where agents write a growing share of commits, and deprecated APIs stop being a cleanup chore and become load-bearing. Sonar's Tom Howlett describes the same dynamic: agents add code but rarely delete it, so superseded functions accumulate next to their replacements (&lt;a href="https://www.infoworld.com/article/4182518/shipping-enterprise-quality-code-with-ai-agents.html" rel="noopener noreferrer"&gt;InfoWorld, 2026&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Note what this isn't: a capability problem. Stanford's 2026 AI Index reports SWE-bench Verified performance rose from 60% to near 100% in a single year (&lt;a href="https://hai.stanford.edu/ai-index/2026-ai-index-report" rel="noopener noreferrer"&gt;Stanford HAI, 2026&lt;/a&gt;). The models can write the code. They just can't tell which API you actually want written.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do rules files and deprecation comments fix this?
&lt;/h2&gt;

&lt;p&gt;Partially, and honestly, that's worth having. A line in CLAUDE.md saying "use PaymentClientV2, never PaymentClient" works the day you write it. &lt;code&gt;@deprecated&lt;/code&gt; annotations help too, when the agent reads the annotated file. But three limits show up fast. First, rules files rot: nothing breaks when a rule goes stale, so &lt;a href="https://getunblocked.com/blog/rules-file-rot/" rel="noopener noreferrer"&gt;the drift stays invisible&lt;/a&gt; until an agent acts on it. Second, they don't scale. Keeping &lt;a href="https://getunblocked.com/blog/keeping-claude-md-agents-md-cursorrules-in-sync/" rel="noopener noreferrer"&gt;CLAUDE.md, AGENTS.md, and .cursorrules in sync&lt;/a&gt; is hard in one repo and hopeless across fifty. Third, nobody updates them, because the deprecation decision happened in a PR review or a Slack thread, and writing it into a rules file is unrewarded manual work.&lt;/p&gt;

&lt;p&gt;That's the honest assessment behind the &lt;a href="https://getunblocked.com/blog/rules-files-vs-context-engine/" rel="noopener noreferrer"&gt;rules files vs. context engine&lt;/a&gt; tradeoff. Qodo's survey of 609 developers found 65% say AI misses relevant context during critical tasks (&lt;a href="https://www.infoworld.com/article/4183153/why-ai-coding-debt-is-different.html" rel="noopener noreferrer"&gt;InfoWorld, 2026&lt;/a&gt;). A hand-edited file was never going to close that gap alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually works: ranking sources of truth
&lt;/h2&gt;

&lt;p&gt;The fix is a context layer that knows recency and authority, so the agent stops treating a 2023 example file and last month's migration PR as equal witnesses. This is what Unblocked does: it synthesizes your PRs, Slack decisions, and migration history into &lt;a href="https://getunblocked.com/blog/decision-grade-context/" rel="noopener noreferrer"&gt;decision-grade context&lt;/a&gt;, so instead of three conflicting matches, the agent sees "this API was deprecated in March, use X instead," with the reasoning attached. It's &lt;a href="https://getunblocked.com/blog/claude-code-institutional-memory/" rel="noopener noreferrer"&gt;institutional memory your agents can query&lt;/a&gt; instead of a file someone has to remember to edit.&lt;/p&gt;

&lt;p&gt;Here's how one team wires it in:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The first instruction in every agent project file is: before making any changes, gather context. That pulls from Jira, Confluence, and Slack via Unblocked — because that's where most of our knowledge actually lives, in threaded discussions. I set it up the day it was announced and now I don't even think about it. I just get the relevant information.&lt;/p&gt;

&lt;p&gt;— Andrei Antanovich, Software Engineer, Waste Logics&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unblocked doesn't generate code. It's the &lt;a href="https://getunblocked.com/blog/unblocked-context-engine-for-agents/" rel="noopener noreferrer"&gt;context engine that feeds your agents&lt;/a&gt;, whichever agent you run, the current answer instead of the most common one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why does my agent repeat the mistake even after I correct it?
&lt;/h3&gt;

&lt;p&gt;Your correction lives in one session's context, and it evaporates when the session ends. The model's weights still favor the old pattern, and the stale sources that misled it are all still there. Unless the correction lands somewhere durable that gets retrieved next time, every fresh session starts from the same frozen prior. That's why teams that fix this fix it at the retrieval layer, not the prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will a newer model stop suggesting deprecated APIs?
&lt;/h3&gt;

&lt;p&gt;It moves the cutoff, not the problem. A newer model knows about public deprecations up to its training date, but your internal deprecations never appear in any training set. The day after release, the model is frozen again while your codebase keeps moving. Retrieval that ranks freshness is what closes the gap, not the release calendar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I delete old code so agents can't find it?
&lt;/h3&gt;

&lt;p&gt;Deleting genuinely dead examples and stale wiki pages helps a lot; they're pure noise. But you can't delete a deprecated API mid-migration while callers still exist. That's exactly when agents do the most damage, and when a context layer that flags "deprecated, migration in progress, use X" earns its keep.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 20-minute version to try this week
&lt;/h2&gt;

&lt;p&gt;Pick the one deprecation your agents trip over most, and run this: grep the old call sites and check what an agent doing "search, then imitate" would find. Read where the current guidance actually lives; if it's a Slack thread and a merged PR, no rules file mentions it, which means no agent can honor it. Then do two cheap things: delete or quarantine the stalest example file, and add one line to your rules file naming the replacement. That buys you weeks. For the durable fix, make context-gathering the first step of every agent session, the way Andrei's team does, with a context layer that ranks your sources of truth by recency and authority. Your agent was never confused about how to write code. It was confused about which of your five answers was current, and that's a problem you can now actually solve.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>api</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
