[{"data":1,"prerenderedAt":868},["ShallowReactive",2],{"blog-claude-code-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":23,"sources":33,"cover":67,"og":68,"expertise":69,"locales":70,"lang":71,"title":74,"description":75,"coverAlt":76,"metaTitle":77,"takeaways":78,"faq":84,"toc":97,"blocks":125,"others":599},"claude-code","2026-08-31",10,"agents",[9,10,11,12,13],"Terminal agent","Hooks","Subagents","MCP","Sandbox",[15,16,17,18,19,20,21,22],"claude code","claude code pricing","claude code hooks","claude code vs cursor","claude code sandbox","claude code subagents","claude code context window","coding agent comparison",[24,27,30],{"name":25,"url":26},"Claude (language model)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FClaude_(language_model)",{"name":28,"url":29},"Model Context Protocol","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FModel_Context_Protocol",{"name":31,"url":32},"Software carpentry","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_carpentry",[34,37,40,43,46,49,52,55,58,61,64],{"title":35,"url":36},"Claude Code documentation: overview","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Foverview",{"title":38,"url":39},"Claude Code documentation: how Claude Code works","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fhow-claude-code-works",{"title":41,"url":42},"Claude Code documentation: extend Claude Code","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Ffeatures-overview",{"title":44,"url":45},"Claude Code documentation: hooks reference","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fhooks",{"title":47,"url":48},"Claude Code documentation: configure permissions","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fpermissions",{"title":50,"url":51},"Claude Code documentation: sandboxing","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fsandboxing",{"title":53,"url":54},"Claude Code documentation: manage costs effectively","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fcosts",{"title":56,"url":57},"Claude Code documentation: explore the context window","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fcontext-window",{"title":59,"url":60},"Claude Code changelog","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fchangelog",{"title":62,"url":63},"Claude Platform pricing: model list prices and prompt caching","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fpricing",{"title":65,"url":66},"Anthropic pricing: Claude Free, Pro, Max, Team and Enterprise","https:\u002F\u002Fwww.anthropic.com\u002Fpricing","\u002Fimages\u002Fblog\u002Fclaude-code\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fclaude-code\u002Fog.jpg","ai-engineer",[71,72,73],"en","de","hu","Claude Code: the terminal coding agent, reviewed","An engineering review of Claude Code: the extension surface, the real cost per developer, and the exact boundary of the Bash sandbox.","A long bar split by one vertical line, with three modules above and a small pile of discs.","Claude Code review: an agent in the terminal · Balázs Csorba",[79,80,81,82,83],"Version 2.1.292 shipped on 6 October 2026 and the changelog lists releases almost daily, so pinning a version for CI is standing work rather than a one-off.","Six mechanisms extend the loop — CLAUDE.md, skills, subagents, MCP, hooks and plugins — and using the wrong one is the most common configuration mistake.","Permission rules are enforced by the client, not the model, which makes a PreToolUse hook the only guard that still holds in bypassPermissions.","The Bash sandbox covers Bash, PowerShell and Monitor commands only; file tools, MCP servers, hooks and language servers all run outside it.","Anthropic's own cost documentation puts average enterprise spend at about $13 per developer per active day, with 90% of users below $30.",[85,88,91,94],{"q":86,"a":87},"How much does Claude Code cost per month?","The client is free to install, but Claude Code is not part of the Free plan. Access comes through Claude Pro at $20 a month ($17 billed annually), Max from $100 a month, a Team or Enterprise seat, or the Anthropic API billed per token with no minimum. Anthropic's cost documentation puts average enterprise spend at about $13 per developer per active day and $150 to $250 per month.",{"q":89,"a":90},"Can Claude Code run unattended in CI?","Yes, with the -p flag in non-interactive mode and the dontAsk permission mode, which denies every tool call that would otherwise prompt. The documentation is explicit that any session started with --dangerously-skip-permissions belongs inside a container, virtual machine or the sandbox runtime, running as a non-root user.",{"q":92,"a":93},"What does a PreToolUse hook actually enforce?","It runs before the tool call, in every permission mode including dontAsk and bypassPermissions, and can return permissionDecision deny to block it. A deny from a hook still blocks the call in bypassPermissions mode, but an allow from a hook cannot override a deny rule that already exists in settings.",{"q":95,"a":96},"Does the sandbox cover MCP servers and hooks?","No. The Bash sandbox applies to Bash, PowerShell and Monitor commands and their child processes on macOS, Linux and WSL2. Read, Edit, WebFetch, MCP servers, command hooks, plugin monitors and language servers all run outside that boundary, and native Windows runs unsandboxed.",[98,101,104,107,110,113,116,119,122],{"id":99,"title":100},"what-it-is","What it actually is",{"id":102,"title":103},"how-it-works","How it works: one context window",{"id":105,"title":106},"the-extension-surface","The extension surface",{"id":108,"title":109},"getting-started","Getting started properly",{"id":111,"title":112},"cost","What it costs",{"id":114,"title":115},"security","Security and isolation",{"id":117,"title":118},"where-it-weakens","Where it weakens",{"id":120,"title":121},"verdict","Verdict",{"id":123,"title":124},"sources","Sources",[126,130,133,136,139,195,196,199,205,208,209,212,276,287,294,295,298,300,325,335,336,339,408,411,416,417,427,430,458,471,472,475,491,535,538,539,542,558,562,563],{"type":127,"content":128},"paragraph",[129],"Claude Code is Anthropic's terminal-first coding agent: a CLI that reads a repository, edits files, runs commands and iterates on the result, with the Claude models behind it. On the evidence of the documentation it is the most complete agent harness on the market, and the reason is not the model but the six extension mechanisms wrapped around the loop. The cost of that completeness is a configuration surface large enough to get wrong, and a release cadence — 2.1.292 landed on 6 October 2026 — that turns version pinning into standing maintenance. Worth adopting, provided the security section below is read before the first unattended run.",{"type":127,"content":131},[132],"It competes with Cursor's editor-native agent, GitHub Copilot's agent mode and the Codex CLI, and it is the only one of the four where the agent is the application rather than a feature of an editor. That matters on a large repository, where the agent gets the whole working tree, the shell and the git history rather than whatever happens to be open in a tab. The trade is the interface: a terminal is a poor place to read a diff, which is why the VS Code and JetBrains extensions exist at all.",{"type":134,"level":135,"id":99,"text":100},"heading",2,{"type":127,"content":137},[138],"The agentic loop is the product. A task moves through gather context, take action, verify results, over and over, with the model choosing the next tool call and the harness supplying the tools: file operations, search, shell execution, web search, and code intelligence through language-server plugins. Everything below the loop — settings files, skills, subagents, hooks — exists to make that loop cheaper, safer or broader.",{"type":140,"ordered":141,"items":142},"list",false,[143,145,147,149,174,176,178],[144],"Version 2.1.292, published 6 October 2026; the changelog lists releases up to that point almost daily.",[146],"Runs in the terminal, as VS Code and JetBrains extensions, on the desktop, in the browser, and on Amazon Bedrock and Google Cloud.",[148],"Built-in tools cover file operations, search, shell, web search and code intelligence; the terminal CLI, VS Code and JetBrains also accept third-party providers.",[150,151,155,156,159,160,159,163,159,166,169,170,173],"Permission modes are ",{"tag":152,"children":153},"code",[154],"default"," (labelled manual), ",{"tag":152,"children":157},[158],"acceptEdits",", ",{"tag":152,"children":161},[162],"plan",{"tag":152,"children":164},[165],"auto",{"tag":152,"children":167},[168],"dontAsk"," and ",{"tag":152,"children":171},[172],"bypassPermissions",".",[175],"Auto mode is the built-in starting mode for interactive terminal and VS Code sessions on Pro, Max and Team: a separate classifier model reviews each action instead of a human.",[177],"The Bash sandbox uses operating-system primitives — Seatbelt on macOS, bubblewrap on Linux — and applies to Bash, PowerShell and Monitor commands only.",[179,180,159,183,159,186,159,189,169,192,173],"Bundled skills ship in the box, including ",{"tag":152,"children":181},[182],"\u002Fdoctor",{"tag":152,"children":184},[185],"\u002Fcode-review",{"tag":152,"children":187},[188],"\u002Fbatch",{"tag":152,"children":190},[191],"\u002Fdebug",{"tag":152,"children":193},[194],"\u002Floop",{"type":134,"level":135,"id":102,"text":103},{"type":127,"content":197},[198],"Everything the model knows about a session lives in a single context window: CLAUDE.md and any AGENTS.md, auto memory, MCP tool names, skill descriptions, every file read, every tool result and the transcript itself. Path-scoped rules load when their trigger file is read. When the window fills, the session compacts — the conversation is replaced with a structured summary, the root CLAUDE.md and unscoped rules are re-injected from disk, up to five recently modified files are re-read, and invoked skill bodies come back capped at 5,000 tokens each and 25,000 in total.",{"type":200,"src":201,"alt":202,"wide":203,"caption":204},"image","\u002Fimages\u002Fblog\u002Fclaude-code\u002Fdiagram-7.webp","Where a session's tokens go, and what compaction keeps Four columns. Startup: CLAUDE.md, unscoped rules, auto memory and skill names, re-injected from disk after compaction. Reads: file contents, tool output and web results, kept only as part of the summary. History: the transcript and its thinking, replaced by a structured summary. Output: the final text, the diffs and the summaries returned by subagents, which are not summarised away. A band below: after compaction the project CLAUDE.md, unscoped rules, auto memory, the git status snapshot and the plan are re-injected from disk, while up to five recently modified files, path-scoped rules and nested CLAUDE.md files are rebuilt on demand. Invoked skill bodies return capped at 5,000 tokens each and 25,000 in total.",true,"Context is the scarce resource: everything the model knows about a session is re-sent on every turn, and compaction is the mechanism that throws part of it away.",{"type":127,"content":206},[207],"The consequence for a bill is that re-sent history dominates, not the answer. A real session screen reports hundreds of thousands of cached input tokens against a few thousand output tokens, and cache reads are billed at a tenth of the input rate on current models. Anyone trying to reduce spend is really deciding what enters the window, which is why the documentation pushes MCP Tool Search, subagents and skills over simply asking the model to be brief.",{"type":134,"level":135,"id":105,"text":106},{"type":127,"content":210},[211],"Six mechanisms extend the loop, and the documentation is unusually clear that they are not interchangeable. CLAUDE.md is always-on context. A skill is knowledge or a workflow loaded on demand, following the Agent Skills open standard. A subagent is an isolated context that returns a summary instead of its transcript. MCP connects external services. A hook is a shell command, HTTP request, MCP tool call, single-turn prompt or agent that fires on a lifecycle event. Plugins bundle the lot for distribution across a team.",{"type":213,"head":214,"rows":223},"table",[215,217,219,221],[216],"Mechanism",[218],"What it is",[220],"Context cost",[222],"Deterministic?",[224,233,242,250,258,267],[225,227,229,231],[226],"CLAUDE.md",[228],"Always-on project instructions",[230],"Injected at session start",[232],"No, the model decides to follow it",[234,236,238,240],[235],"Skill",[237],"Markdown knowledge or workflow",[239],"Description at start, body on use",[241],"No",[243,245,247,249],[244],"Subagent",[246],"Isolated loop returning a summary",[248],"Only the summary returns",[241],[251,253,255,257],[252],"MCP server",[254],"External tools and data",[256],"Names at start, schemas on use",[241],[259,261,263,265],[260],"Hook",[262],"Script or model call on an event",[264],"Zero unless it returns output",[266],"Yes, the event always fires",[268,270,272,274],[269],"Plugin",[271],"Bundle of skills, hooks, agents, MCP",[273],"Whatever the bundle contains",[275],"Depends on contents",{"type":127,"content":277},[278,279,282,283,286],"One sentence from the permissions documentation decides the whole design: permission rules are enforced by Claude Code, not by the model. An instruction like ",{"tag":152,"children":280},[281],"never edit .env"," in CLAUDE.md is a request; a ",{"tag":152,"children":284},[285],"PreToolUse"," hook that denies the edit is enforcement. Any team treating the first as a control has misread the threat model.",{"type":288,"variant":289,"title":290,"body":291},"callout","warn","Auto mode is a classifier, not a boundary",[292],[293],"Auto mode removes the human from the loop and replaces it with a second model that reviews each action before it runs. That is a per-action control, not an isolation boundary. A container, a virtual machine or the sandbox runtime is what stops a bad action from reaching the filesystem, and the documentation recommends keeping both.",{"type":134,"level":135,"id":108,"text":109},{"type":127,"content":296},[297],"Installation is a shell script and a login; there is no project to set up. The part of a first session worth getting right is the settings file, because that is where a team converts prompt instructions into enforced rules. This project-level configuration allowlists the commands it trusts, blocks a git push, formats every edit and switches on the Bash sandbox:",{"type":152,"code":299},"{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(npm run *)\",\n      \"Bash(git commit *)\",\n      \"Read\",\n      \"Edit(src\u002F**)\"\n    ],\n    \"deny\": [\n      \"Bash(git push *)\",\n      \"Read(.env)\"\n    ]\n  },\n  \"sandbox\": {\n    \"enabled\": true,\n    \"allowWrite\": [\"src\"],\n    \"allowedDomains\": [\"registry.npmjs.org\"]\n  },\n  \"hooks\": {\n    \"PostToolUse\": [\n      {\n        \"matcher\": \"Edit|Write\",\n        \"hooks\": [\n          { \"type\": \"command\", \"command\": \"jq -r '.tool_input.file_path' | xargs npx prettier --write\" }\n        ]\n      }\n    ]\n  }\n}\n",{"type":127,"content":301},[302,303,306,307,310,311,314,315,318,319,321,322,324],"Two details in that file are easy to get wrong. ",{"tag":152,"children":304},[305],"Bash(git commit *)"," matches ",{"tag":152,"children":308},[309],"git commit -m 'x'"," but not ",{"tag":152,"children":312},[313],"git -C . commit -m 'x'",", because the wildcard stands in for whatever text sits in its place. And a hook that exits 0 with no output has not approved anything — it has declined to decide, and the call continues through the normal permission flow. What does hold everywhere is a ",{"tag":152,"children":316},[317],"deny"," returned by a ",{"tag":152,"children":320},[285]," hook: it still blocks the tool in ",{"tag":152,"children":323},[172]," mode, which is the one guarantee that survives a developer who has switched their own prompts off.",{"type":288,"variant":326,"title":327,"body":328},"note","Commit the settings file",[329],[330,331,334],"Put that file at ",{"tag":152,"children":332},[333],".claude\u002Fsettings.json"," and check it into the repository. Enterprise enforcement has to start from managed settings delivered by an MDM or from the server, because no user setting, project setting or command-line flag can override them — a project file only binds the teams that agree to it.",{"type":134,"level":135,"id":111,"text":112},{"type":127,"content":337},[338],"The client is free to install and Claude Code is not part of the Free plan. Model access comes from a Claude subscription, a Team or Enterprise seat, or the Anthropic API billed per token. What makes the bill hard to predict is that subscriptions meter against rolling usage windows rather than publishing a token allowance.",{"type":213,"head":340,"rows":349},[341,343,345,347],[342],"Route",[344],"Price",[346],"Claude Code",[348],"Shape",[350,359,368,376,384,392,400],[351,353,355,357],[352],"Free",[354],"$0",[356],"Not included",[358],"Chat only, no terminal agent",[360,362,364,366],[361],"Pro",[363],"$20 a month, $17 billed annually",[365],"Yes",[367],"Rolling session and weekly limits",[369,371,373,374],[370],"Max",[372],"From $100 a month",[365],[375],"5x or 20x Pro usage",[377,379,381,382],[378],"Team standard seat",[380],"$20 a seat annually, $25 monthly",[365],[383],"Mix and match with premium seats",[385,387,389,390],[386],"Team premium seat",[388],"$100 a seat annually, $125 monthly",[365],[391],"Five times the standard seat usage",[393,395,397,398],[394],"Enterprise",[396],"$20 a seat annually plus usage at API rates",[365],[399],"SSO, SCIM, audit logs, spend limits",[401,403,405,406],[402],"Anthropic API",[404],"Per token, no minimum",[365],[407],"Hard ceiling, billed directly",{"type":127,"content":409},[410],"On the per-token route the current list prices are $4 per million input tokens and $20 per million output tokens for Opus 5.5, $2 and $10 for Sonnet 5.5, and $1 and $5 for Haiku 4.5, with cache reads at $0.20, $0.20 and $0.10. The cheapest lever is therefore the model: the same task on Sonnet 5.5 instead of Opus 5.5 halves the bill at list price, and Haiku 4.5 is a quarter of it. The documentation pushes the same point from the other end — moving long instructions out of CLAUDE.md and into skills, keeping MCP servers few, and pushing verbose work into subagents so their transcripts never enter the main window.",{"type":288,"variant":289,"title":412,"body":413},"Two numbers matter more than the plan table",[414],[415],"Claude 4.7 and later use a newer tokenizer that produces approximately 30% more tokens for the same text, so the cost of a given task rose without the model name changing. And Anthropic's own documentation puts average enterprise spend at about $13 per developer per active day and $150 to $250 per month, with 90% of users under $30 a day. A seat price predicts none of that.",{"type":134,"level":135,"id":114,"text":115},{"type":127,"content":418},[419,420,422,423,426],"The security model is the strongest part of the design and the easiest to misuse. Rules are matched by Claude Code rather than by the model, precedence puts a deny at any scope above an allow at any other, and managed settings outrank user settings, project settings and command-line flags. Deny rules hold in ",{"tag":152,"children":421},[172],", and a removal such as ",{"tag":152,"children":424},[425],"rm -rf \u002F"," is refused even when an allow rule or a hook permits it. That is the behaviour you want from a circuit breaker.",{"type":127,"content":428},[429],"The sandbox is the second layer, and its scope is narrower than the name suggests:",{"type":140,"ordered":141,"items":431},[432,434,440,442,452],[433],"Bash, PowerShell and Monitor commands and their child processes, on macOS, Linux and WSL2 — native Windows runs unsandboxed.",[435,436,439],"File tools such as Read, Edit, Write and WebFetch, which follow permission rules instead; a sandbox ",{"tag":152,"children":437},[438],"denyRead"," entry does not stop Read.",[441],"MCP servers, command hooks, plugin monitors, language servers and helper commands, all of which run with the session's full access.",[443,444,447,448,451],"Commands that fail inside the sandbox can be retried unsandboxed through ",{"tag":152,"children":445},[446],"dangerouslyDisableSandbox","; setting ",{"tag":152,"children":449},[450],"allowUnsandboxedCommands"," to false removes the escape hatch.",[453,454,457],"Trust is per directory and lasts one session: a project-level subagent's frontmatter hooks do not run until the workspace trust dialog is accepted, and a ",{"tag":152,"children":455},[456],"-p"," run does not count as accepting it.",{"type":288,"variant":289,"title":459,"body":460},"The environment variable that changes your invoice",[461],[462,463,466,467,470],"If ",{"tag":152,"children":464},[465],"ANTHROPIC_API_KEY"," is set in the environment, the CLI authenticates with the API key and bills at API rates instead of drawing on the subscription. In CI that is usually intended; on a developer machine it is a silent cost switch. The security documentation also notes that reviewing a project's ",{"tag":152,"children":468},[469],".mcp.json"," does not show every server a session can load, because plugins and user-scope servers sit outside the repository.",{"type":134,"level":135,"id":117,"text":118},{"type":127,"content":473},[474],"The honest weaknesses come before the comparison. Claude Code is fast-moving and configuration-heavy, the model behind it is not yours to tune, and the agent has shell access by design.",{"type":140,"ordered":141,"items":476},[477,483,485,487,489],[478,479,482],"A release a day means behaviour can change under a CI job. ",{"tag":152,"children":480},[481],"--bare"," exists to strip hooks, skills, commands, subagents, plugins, MCP servers, auto memory and CLAUDE.md for reproducible scripted runs, and it is the right default there.",[484],"Context is the scarce resource. Compaction drops the middle of the conversation, only five files are re-read afterwards, and skill bodies are truncated from the start — so the important instruction at the bottom of a long SKILL.md is the one that disappears.",[486],"Descriptions of model-invocable skills load on every request, so vague or overlapping descriptions make the model load the wrong skill or miss the useful one.",[488],"Subscriptions meter in time windows, not dollars. One heavy morning can exhaust the session limit with a week of allowance still unused, and only API billing offers a hard ceiling.",[490],"It is closed. Anthropic's models are the product; only the terminal CLI, VS Code and JetBrains accept a third-party provider, and agent features are not portable to another harness.",{"type":213,"head":492,"rows":500},[493,495,496,498],[494],"Option",[218],[497],"Entry price",[499],"Main trade-off",[501,509,517,526],[502,503,505,507],[346],[504],"Terminal agent, the application itself",[506],"$20 a month on Pro",[508],"Highest ceiling for repository-scale work, largest configuration surface",[510,512,514,515],[511],"Cursor",[513],"Editor fork with an agent mode",[506],[516],"Better diff and inline ergonomics, but the agent lives inside the editor",[518,520,522,524],[519],"GitHub Copilot",[521],"IDE extension, completions plus agent",[523],"$10 a month on Pro",[525],"Cheapest entry point, least autonomy of the four",[527,529,531,533],[528],"Codex CLI",[530],"Terminal agent on OpenAI models",[532],"Bundled with ChatGPT plans",[534],"A different model family, without the Claude-specific harness features",{"type":127,"content":536},[537],"The short version: for long-running, repository-scale work the terminal harness wins on capability; for line-by-line work an editor-native agent on a cheaper seat is the better buy. Running both is a defensible $30 a month, and most teams who end up there describe it as in-editor work for the small changes and the terminal for everything that spans a repository.",{"type":134,"level":135,"id":120,"text":121},{"type":127,"content":540},[541],"Claude Code is worth adopting on one condition: the team writes the guardrails down and puts them in version control. Without a committed settings file, a PreToolUse hook on the protected paths and an explicit decision about unattended runs, the tool is faster than a reviewer and less careful than one.",{"type":140,"ordered":203,"items":543},[544,546,548,550,552],[545],"Adopt it when the work is repository-scale: migrations, refactors, multi-file changes that end in a verification step.",[547],"Adopt it when the budget can carry one seat for a heavy user and one for a light user — the windows, not the seats, are the binding constraint.",[549],"Adopt the permission and hook model seriously. It is the only difference between an agent and a supervised agent.",[551],"Do not make it the only tool. Keep an editor-native completion product if most of the day is writing lines rather than changing systems.",[553,554,557],"Do not run it unattended on a machine you care about without a container, and never with ",{"tag":152,"children":555},[556],"--dangerously-skip-permissions"," outside one.",{"type":559,"content":560},"quote",[561],"Permission rules are enforced by Claude Code, not by the model. Instructions in your prompt or CLAUDE.md shape what Claude tries to do, but they do not change what Claude Code allows.",{"type":134,"level":135,"id":123,"text":124},{"type":140,"ordered":203,"items":564},[565,569,572,575,578,581,584,587,590,593,596],[566],{"tag":567,"href":36,"children":568},"a",[35],[570],{"tag":567,"href":39,"children":571},[38],[573],{"tag":567,"href":42,"children":574},[41],[576],{"tag":567,"href":45,"children":577},[44],[579],{"tag":567,"href":48,"children":580},[47],[582],{"tag":567,"href":51,"children":583},[50],[585],{"tag":567,"href":54,"children":586},[53],[588],{"tag":567,"href":57,"children":589},[56],[591],{"tag":567,"href":60,"children":592},[59],[594],{"tag":567,"href":63,"children":595},[62],[597],{"tag":567,"href":66,"children":598},[65],[600,657,730,800],{"slug":601,"published":602,"minutes":603,"category":7,"tags":604,"keywords":609,"about":620,"sources":629,"cover":651,"og":652,"expertise":69,"locales":653,"lang":71,"title":654,"description":655,"coverAlt":656},"agent-tool-design-descriptions-errors","2026-10-17",11,[605,606,607,12,608],"AI agents","Tool use","Function calling","Agent design",[610,611,612,613,614,615,616,617,618,619],"agent tool design","writing tool descriptions for llm","function calling best practices","tool use error handling","mcp tool design","tool calling is_error","how many tools should an agent have","tool search defer_loading","agent computer interface","llm tool schema design",[621,624,626],{"name":622,"url":623},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":28,"url":625},"https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":627,"url":628},"Poka-yoke","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoka-yoke",[630,633,636,639,642,645,648],{"title":631,"url":632},"Anthropic Engineering: Writing effective tools for agents, with agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fwriting-tools-for-agents",{"title":634,"url":635},"Anthropic Engineering: Building effective agents (Dec 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":637,"url":638},"Claude Platform Docs: Define tools","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fdefine-tools",{"title":640,"url":641},"Claude Platform Docs: Handle tool calls","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fhandle-tool-calls",{"title":643,"url":644},"Claude Platform Docs: Tool search tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Ftool-search-tool",{"title":646,"url":647},"Model Context Protocol specification 2025-11-25: Tools","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fserver\u002Ftools",{"title":649,"url":650},"OpenAI API Docs: Function calling","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ffunction-calling","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fog.jpg",[71,72,73],"Designing tools for AI agents: names, descriptions, schemas and error messages","How to design agent tools that get picked and called correctly: task-shaped tools, descriptions, schemas, compact responses and errors a model can act on.","Three rectangular slots in a base, with a block of matching width lined up over the middle slot and two wrong-width blocks beside it.",{"slug":658,"published":602,"minutes":603,"category":7,"tags":659,"keywords":665,"about":678,"sources":688,"cover":724,"og":725,"expertise":69,"locales":726,"lang":71,"title":727,"description":728,"coverAlt":729},"coding-agents-legacy-codebase-migration",[660,661,662,663,664],"Legacy migration","Coding agents","Strangler fig","Testing","Code review",[666,667,668,669,670,671,672,673,674,675,676,677],"legacy code migration ai","coding agent legacy codebase","strangler fig pattern ai","characterization tests legacy code","ai code migration review","agent assisted refactoring","legacy modernization coding agent","differential testing migration","shadow traffic migration","ai code review gate","test harness before migration","llm code migration",[679,682,685],{"name":680,"url":681},"Legacy code","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLegacy_code",{"name":683,"url":684},"Characterization test","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCharacterization_test",{"name":686,"url":687},"Strangler fig pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FStrangler_fig_pattern",[689,692,694,697,700,703,706,709,712,715,718,721],{"title":690,"url":691},"Martin Fowler: Strangler Fig (2024)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FStranglerFigApplication.html",{"title":693,"url":684},"Wikipedia: Characterization test",{"title":695,"url":696},"Google Research: Accelerating code migrations with AI (2024)","https:\u002F\u002Fresearch.google\u002Fblog\u002Faccelerating-code-migrations-with-ai\u002F",{"title":698,"url":699},"Ziftci et al.: Migrating Code At Scale With LLMs At Google (arXiv 2504.09691)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":701,"url":702},"Anthropic: Effective harnesses for long-running agents (2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":704,"url":705},"Anthropic: Redesigning source control at Anthropic (2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fredesigning-source-control",{"title":707,"url":708},"METR: Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity","https:\u002F\u002Fmetr.org\u002Fblog\u002F2025-07-10-early-2025-ai-experienced-os-dev-study\u002F",{"title":710,"url":711},"Chand et al.: Why Industry Migrates and When It Trusts LLMs (ESEM 2026)","https:\u002F\u002Fdrops.dagstuhl.de\u002Fentities\u002Fdocument\u002F10.4230\u002FLIPIcs.ESEM.2026.85",{"title":713,"url":714},"Li et al.: Environment-in-the-Loop: Rethinking Code Migration with LLM-based Agents (arXiv 2602.09944)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.09944",{"title":716,"url":717},"AWS: Amazon Q Developer just reached a $260 million dollar milestone (2024)","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Famazon-q-developer-just-reached-a-260-million-dollar-milestone\u002F",{"title":719,"url":720},"OpenAI: Why SWE-bench Verified no longer measures frontier coding capabilities (2026)","https:\u002F\u002Fopenai.com\u002Findex\u002Fwhy-we-no-longer-evaluate-swe-bench-verified\u002F",{"title":722,"url":723},"GitHub Docs: About GitHub Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcoding-agent\u002Fabout-coding-agent","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fog.jpg",[71,72,73],"Migrating a legacy codebase with coding agents: a strangler fig playbook","How to use coding agents on a legacy migration: characterization tests first, one seam per task, review gates and differential verification.","A stack of slabs with the top two replaced by fresh ones beside a seam and a check.",{"slug":731,"published":602,"minutes":732,"category":7,"tags":733,"keywords":737,"about":749,"sources":759,"cover":794,"og":795,"expertise":69,"locales":796,"lang":71,"title":797,"description":798,"coverAlt":799},"background-agents-async-pr-workflow",12,[661,734,735,664,736],"Pull requests","CI","Automation",[738,739,740,741,742,743,744,745,746,747,748],"background coding agent","async coding agent","cloud coding agent pull request","copilot coding agent limits","codex cloud tasks","claude code cloud sessions","jules coding agent limits","agent pull request review","coding agent sandbox","agent CI gating","cost per merged pull request",[750,753,756],{"name":751,"url":752},"Software agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_agent",{"name":754,"url":755},"Pull request","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDistributed_version_control",{"name":757,"url":758},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[760,761,764,767,770,773,776,779,782,785,788,791],{"title":722,"url":723},{"title":762,"url":763},"GitHub Docs: Risks and mitigations for Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcloud-agent\u002Frisks-and-mitigations",{"title":765,"url":766},"OpenAI Developers: Codex cloud environments","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcloud\u002Fenvironments",{"title":768,"url":769},"Anthropic: Use Claude Code in the cloud","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fclaude-code-on-the-web",{"title":771,"url":772},"Google Jules: Limits and plans","https:\u002F\u002Fjules.google\u002Fdocs\u002Fusage-limits\u002F",{"title":774,"url":775},"Google Jules: Getting started","https:\u002F\u002Fjules.google\u002Fdocs\u002F",{"title":777,"url":778},"GitHub Docs: About protected branches","https:\u002F\u002Fdocs.github.com\u002Fen\u002Frepositories\u002Fconfiguring-branches-and-merges-in-your-repository\u002Fmanaging-protected-branches\u002Fabout-protected-branches",{"title":780,"url":781},"GitHub Docs: Models and pricing for GitHub Copilot","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Freference\u002Fcopilot-billing\u002Fmodels-and-pricing",{"title":783,"url":784},"OpenAI Developers: Codex pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fpricing",{"title":786,"url":787},"Ehsani et al.: Where Do AI Coding Agents Fail? An Empirical Study of Failed Agentic Pull Requests in GitHub (MSR 2026, arXiv 2601.15195)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2601.15195",{"title":789,"url":790},"Peralta et al.: Why Are Agentic Pull Requests Merged or Rejected? An Empirical Study (MSR 2026, arXiv 2605.22534)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2605.22534",{"title":792,"url":793},"DORA: State of AI-assisted Software Development 2025","https:\u002F\u002Fdora.dev\u002Fdora-report-2025","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fog.jpg",[71,72,73],"Background coding agents that open PRs: a practical async workflow","How async coding agents queue tasks, run in sandboxes, open draft PRs and pass CI. Provider limits, cost controls, review design and failure modes.","One card in a tray fanning out to five pads, all arrows leading to one page behind a gate.",{"slug":801,"published":802,"minutes":6,"category":7,"tags":803,"keywords":809,"about":821,"sources":829,"cover":862,"og":863,"expertise":69,"locales":864,"lang":71,"title":865,"description":866,"coverAlt":867},"context-rot-compaction-long-running-agents","2026-10-16",[804,805,806,807,808],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[810,811,812,813,814,815,816,817,818,819,820],"context rot","context rot LLM","compaction AI agents","context engineering","long-running agents context window","Claude compaction API","context editing clear tool results","OpenAI responses compaction","lost in the middle LLM","agent context management","sub-agents context isolation",[822,825,828],{"name":823,"url":824},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":826,"url":827},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":622,"url":623},[830,833,836,839,842,844,847,850,853,856,859],{"title":831,"url":832},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":834,"url":835},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":837,"url":838},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":840,"url":841},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":843,"url":702},"Anthropic: Effective harnesses for long-running agents (Nov 2025)",{"title":845,"url":846},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":848,"url":849},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":851,"url":852},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":854,"url":855},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":857,"url":858},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":860,"url":861},"Cognition: Don't Build Multi-Agents","https:\u002F\u002Fcognition.ai\u002Fblog\u002Fdont-build-multi-agents","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fog.jpg",[71,72,73],"Context rot in long-running agents: clearing, compaction, memory and sub-agents","Why LLM accuracy drops as context grows, and how clearing tool results, compaction, notes and sub-agents keep long-running agents on track.","A small square press squeezing a tall stack of sheets into a short one, two notes branching off.",1792261156007]