[{"data":1,"prerenderedAt":604},["ShallowReactive",2],{"blog-goose-block-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":13,"about":22,"sources":29,"cover":57,"og":58,"expertise":59,"locales":60,"lang":61,"title":64,"description":65,"coverAlt":66,"metaTitle":67,"takeaways":68,"faq":74,"toc":87,"blocks":112,"others":335},"goose-block","2026-07-17",10,"agents",[9,10,11,12],"Coding agent","MCP","Local models","Open source",[14,15,16,17,18,19,20,21],"goose ai agent","goose vs claude code","block goose open source agent","goose mcp extensions","goose recipes","local first ai agent","goose permission modes","agentic ai foundation",[23,26],{"name":24,"url":25},"Model Context Protocol","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FModel_Context_Protocol",{"name":27,"url":28},"goose documentation","https:\u002F\u002Fgoose-docs.ai\u002F",[30,33,36,39,42,45,48,51,54],{"title":31,"url":32},"goose documentation: quickstart","https:\u002F\u002Fgoose-docs.ai\u002Fdocs\u002Fquickstart",{"title":34,"url":35},"goose documentation: configuration files","https:\u002F\u002Fgoose-docs.ai\u002Fdocs\u002Fguides\u002Fconfig-files",{"title":37,"url":38},"goose documentation: permission modes","https:\u002F\u002Fgoose-docs.ai\u002Fdocs\u002Fguides\u002Fmanaging-tools\u002Fgoose-permissions",{"title":40,"url":41},"goose documentation: smart context management","https:\u002F\u002Fgoose-docs.ai\u002Fdocs\u002Fguides\u002Fsessions\u002Fsmart-context-management",{"title":43,"url":44},"goose documentation: recipe reference","https:\u002F\u002Fgoose-docs.ai\u002Fdocs\u002Fguides\u002Frecipes\u002Frecipe-reference",{"title":46,"url":47},"goose documentation: CLI commands","https:\u002F\u002Fgoose-docs.ai\u002Fdocs\u002Fguides\u002Fgoose-cli-commands",{"title":49,"url":50},"goose documentation: known issues","https:\u002F\u002Fgoose-docs.ai\u002Fdocs\u002Ftroubleshooting\u002Fknown-issues",{"title":52,"url":53},"goose has a new home: the Agentic AI Foundation (7 April 2026)","https:\u002F\u002Fgoose-docs.ai\u002Fblog\u002F2026\u002F04\u002F07\u002Fgoose-moves-to-aaif\u002F",{"title":55,"url":56},"goose repository on GitHub","https:\u002F\u002Fgithub.com\u002Faaif-goose\u002Fgoose","\u002Fimages\u002Fblog\u002Fgoose-block\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fgoose-block\u002Fog.jpg","ai-engineer",[61,62,63],"en","de","hu","Goose: the open-source agent you run on your own machine","Goose is an Apache-2.0 coding agent written in Rust, now owned by the Linux Foundation. How its permission modes, recipes and MCP extensions hold up against commercial tools.","A wide box with a triangle roof over one small square, and a card sliding into its side.","Goose review: the open-source agent you run · Balázs Csorba",[69,70,71,72,73],"Goose is an Apache-2.0 coding agent in Rust, released by Block in January 2025 and donated to the Agentic AI Foundation at the Linux Foundation in December 2025, so governance no longer sits with its original sponsor.","Capability is a configuration decision: the tools a session can reach are the MCP extensions enabled for it, restricted per extension with an available_tools allowlist.","Four permission modes exist and the most permissive one, fully autonomous, is the default, so a fresh install edits and deletes files without asking.","Recipes are versioned YAML with parameters, retries and a machine-checkable success test, which makes a repeatable agent workflow something you can review and schedule rather than a prompt you retype.","The operational tax is real: most external extensions need npx or uvx on the machine, dev servers hang sessions until the tool times out, and the docs tell you to end and restart a session when the agent stops responding.",[75,78,81,84],{"q":76,"a":77},"Is goose still a Block project?","No. Block donated goose to the Agentic AI Foundation at the Linux Foundation in December 2025, alongside Anthropic's Model Context Protocol and OpenAI's AGENTS.md, and the move was announced on 7 April 2026. The repository also moved from block\u002Fgoose to aaif-goose\u002Fgoose, so clones need their remote updated.",{"q":79,"a":80},"Can goose use my existing ChatGPT or Claude subscription?","Yes, over the Agent Client Protocol. The quickstart offers a ChatGPT subscription option that signs in with existing credentials to reach Codex models, alongside plain API keys, OpenRouter, a third-party agent router and local Ollama models.",{"q":82,"a":83},"What is the difference between recipes and sub-recipes?","A recipe is a reusable YAML unit with instructions, extensions, parameters and settings. A sub-recipe is one that another recipe invokes as a tool: it runs in a separate session with its own context and no shared memory, and cannot itself define sub-recipes. The docs still label sub-recipes experimental.",{"q":85,"a":86},"How do I stop goose from editing files it should not?","Switch the permission mode away from autonomous. Manual approval asks before every tool, smart approval auto-approves what it reads as low risk, and chat only blocks tool use entirely. Granular per-tool permissions apply in the two approval modes, and GOOSE_MAX_TURNS caps how many turns it can take unattended.",[88,91,94,97,100,103,106,109],{"id":89,"title":90},"what-it-is","What goose is",{"id":92,"title":93},"how-it-works","How it works",{"id":95,"title":96},"context-and-cost","Context, turns and cost",{"id":98,"title":99},"extensions-and-recipes","Extensions and recipes",{"id":101,"title":102},"permissions-and-autonomy","Permissions and autonomy",{"id":104,"title":105},"where-it-shingles","Where it shingles",{"id":107,"title":108},"verdict","Verdict",{"id":110,"title":111},"sources","Sources",[113,117,120,123,126,129,147,148,151,157,160,163,170,171,174,184,187,188,191,193,196,197,200,210,217,218,221,276,279,282,283,286,298,304,305],{"type":114,"content":115},"paragraph",[116],"Goose is an open-source coding agent that runs on the developer's own machine rather than inside a vendor's cloud. It ships as a desktop app for macOS, Linux and Windows, a full CLI, and an API to embed, and it is written in Rust. Block released it publicly in January 2025 and donated it in December 2025 to the Agentic AI Foundation at the Linux Foundation, alongside Anthropic's Model Context Protocol and OpenAI's AGENTS.md, so the project is now governed by a foundation rather than by the company that started it.",{"type":114,"content":118},[119],"What is not commodity here is the extension model. Goose reaches the outside world through Model Context Protocol servers, and the tools a session can use are the extensions enabled for it. That makes an agent's capability surface a configuration decision rather than a property of the binary, which is a materially different shape from an agent with a fixed built-in toolset.",{"type":114,"content":121},[122],"The position after reading the documentation: this is a serious, well-documented agent that loses to the commercial leaders on polish and on individual task quality, and wins on the fact that every part of it can be inspected, forked and redistributed, including the format its workflows are written in. It is most convincing as a platform for standardising agent behaviour across a fleet, and least convincing as a single developer's daily driver when a commercial tool with better autocomplete is already licensed.",{"type":124,"level":125,"id":89,"text":90},"heading",2,{"type":114,"content":127},[128],"Two surfaces on one core. The desktop app is the approachable half and the CLI is the scriptable half; both drive the same session logic, the same config file and the same extension list. The repository is Apache-2.0 and shows roughly 55,000 stars and 6,400 forks.",{"type":130,"ordered":131,"items":132},"list",false,[133,135,137,139,141,143,145],[134],"Apache-2.0 licensed and written in Rust, published as signed release artefacts and as a one-line install script for the CLI.",[136],"15+ LLM providers including Anthropic, OpenAI, Google, Azure, Bedrock, OpenRouter and Ollama, with API keys or an existing subscription over ACP.",[138],"70+ extensions over MCP, in four types: stdio, builtin, platform and streamable HTTP.",[140],"Four permission modes, from fully autonomous to chat only, chosen per session with granular per-tool permissions on top.",[142],"Recipes: versioned YAML files packaging instructions, extensions, parameters, settings, retries and a JSON response schema into one reviewable unit.",[144],"Auto-compaction at 80% of the context window, tool-output summarisation, and a hard turn ceiling that defaults to 1000.",[146],"A scheduler, an ACP server for editors such as Zed, a built-in review command and documented support for shipping your own branded build.",{"type":124,"level":125,"id":92,"text":93},{"type":114,"content":149},[150],"The loop is the standard one: send context, receive a message, and if it contains a tool call, execute the tool and feed the result into the next turn. What goose adds around that loop is bookkeeping. Token accounting, compaction, a turn limit, a cost estimate and a permission gate all sit between the model and the filesystem, and every one of them is a setting rather than a heuristic buried in the binary.",{"type":152,"src":153,"alt":154,"wide":155,"caption":156},"image","\u002Fimages\u002Fblog\u002Fgoose-block\u002Fdiagram-8.webp","The goose agent loop A prompt enters the goose core, which calls a model, receives a tool call, runs it through an MCP extension, and loops back to the prompt. Three controls apply on every turn: the permission mode, the maximum turn limit and automatic context compaction.",true,"The agent loop is the commodity part. The three controls underneath it are the difference: each is an explicit setting that decides how far the agent may go unattended.",{"type":114,"content":158},[159],"Sessions are one continuous conversation. A token indicator shows what is used against what is available, and once the compaction threshold is reached the older part is summarised while the previous messages stay visible in the interface. It is a sensible design, and it means a long session loses fidelity well before it fails.",{"type":161,"code":162},"code","# install the CLI (macOS, Linux), then pick a provider\ncurl -fsSL https:\u002F\u002Fgithub.com\u002Faaif-goose\u002Fgoose\u002Freleases\u002Fdownload\u002Fstable\u002Fdownload_cli.sh | bash\ngoose configure\n\n# run a session in a repository, with a turn cap\ncd ~\u002Fcode\u002Fmy-service\ngoose session --max-turns 25 --with-builtin developer\n\n# unattended: run a recipe and print only the model's reply\ngoose run --recipe release-check.yaml --params env=staging --quiet\n\n# what provider, model and extensions are actually in play\ngoose info --verbose",{"type":114,"content":164},[165,166,169],"Provider settings live in a YAML config file, with secrets in the system keyring by default. Setting ",{"tag":161,"children":167},[168],"GOOSE_DISABLE_KEYRING"," forces file storage instead, which is what the docs prescribe for containers and headless Linux where the keyring is often unavailable. Since version 1.10.0 sessions live in a SQLite database rather than a directory of JSONL files, so backups and migrations are a database problem.",{"type":124,"level":125,"id":95,"text":96},{"type":114,"content":172},[173],"Three settings decide how long a session runs and what it costs, and all three are plain configuration keys rather than hidden behaviour. The docs even suggest values for each class of work, which is unusual and useful.",{"type":130,"ordered":131,"items":175},[176,178,180,182],[177],"Auto-compaction threshold, 0.8 by default, the fraction of the context window at which old turns are summarised; set it to 0.0 to disable.",[179],"Maximum turns without human input, 1000 by default. On reaching it the agent stops and asks. The docs suggest 5 to 10 for exploratory work and 100 or more for a migration.",[181],"Prompt cache lifetime for Anthropic, 5 minutes by default or 1 hour to keep the cached prefix alive across idle gaps at a higher cache-write rate.",[183],"A per-session cost estimate priced from the OpenRouter catalogue and cached locally. The docs are explicit that it is a public-price estimate, not an invoice.",{"type":114,"content":185},[186],"Context limits resolve from an explicit override, then declarative provider config, then runtime discovery, then model metadata, and finally a 128,000-token default. That last fallback matters when goose points at a gateway with a custom model name: the indicator shows the wrong number until the limit is set explicitly, which is a small trap for anyone running it against a proxy.",{"type":124,"level":125,"id":98,"text":99},{"type":114,"content":189},[190],"An extension is an MCP server with a name, a command, a timeout and an optional list of the tools it may expose. That list is the setting that matters most in practice: every tool a session can see is a choice the model has to make correctly on each turn, and narrowing the list is cheaper than a better prompt.",{"type":161,"code":192},"version: \"1.0.0\"\ntitle: \"Release risk check\"\ndescription: \"Diff the branch against a base and report shipping risk\"\nparameters:\n  - key: base\n    input_type: string\n    requirement: required\n    description: \"Branch to compare against\"\nprompt: |\n  Compare this branch against {{ base }} and summarise\n  behavioural risk in shipping order.\n\nextensions:\n  - type: builtin\n    name: developer\n    timeout: 300\n  - type: stdio\n    name: github\n    cmd: npx\n    args: [\"-y\", \"@modelcontextprotocol\u002Fserver-github\"]\n    env_keys: [GITHUB_PERSONAL_ACCESS_TOKEN]\n    available_tools: [get_file_contents, search_code]\n\nsettings:\n  goose_provider: anthropic\n  temperature: 0.2\n  max_turns: 40\n\nretry:\n  max_retries: 2\n  timeout_seconds: 30\n  checks:\n    - type: shell\n      command: \"test -f RISK.md\"",{"type":114,"content":194},[195],"That is the shape worth copying. A recipe is reviewable YAML with a validation command attached, so a scheduled job can be retried until it produces something checkable instead of retried blindly, and validation rejects a template variable with no matching parameter definition. Sub-recipes compose the same way, with the parent mapping its values onto the children, though the docs still mark that feature experimental and note that sub-recipes run in isolated sessions with no shared memory.",{"type":124,"level":125,"id":101,"text":102},{"type":114,"content":198},[199],"Permission is the whole safety story, and the default is the most permissive setting available. There are four modes, and each session picks its own.",{"type":130,"ordered":131,"items":201},[202,204,206,208],[203],"Autonomous, which modifies files, uses extensions and deletes files with no approval. This is the default.",[205],"Manual approval, which asks before any tool and honours the granular per-tool permission list.",[207],"Smart approval, which auto-approves what it reads as low risk and flags the rest. The classification is performed by the model provider, so it is a suggestion rather than a control.",[209],"Chat only, which forbids extensions and file changes, for analysis, writing and reasoning.",{"type":211,"variant":212,"title":213,"body":214},"callout","warn","Read tools run without asking",[215],[216],"In both approval modes goose only prompts for tools it classifies as write operations, such as text editor writes and edits and shell invocations of rm, cp and mv. Reads run unattended, and the classification is itself a model inference that can be wrong in either direction. On a checkout with real history, treat smart approval as a convenience layered on top of manual approval rather than a replacement for it.",{"type":124,"level":125,"id":104,"text":105},{"type":114,"content":219},[220],"The gaps are practical rather than architectural. Most external extensions launch through npx or uvx, so the agent quietly depends on Node.js or a Python toolchain being installed. It will start development servers nobody asked for, and those never exit, so the session hangs until the tool times out. Extensions download their runtimes through a bundled copy of Hermit, which fails on an air-gapped network unless the shims are renamed. Windows installs expect Node.js at a fixed path and the documented remedy is a symbolic link. And the known-issues page advises ending the session and starting a new one when the agent stops responding, which is honest but not a fix.",{"type":222,"head":223,"rows":232},"table",[224,226,228,230],[225],"",[227],"goose",[229],"Claude Code",[231],"OpenHands",[233,242,250,258,267],[234,236,238,240],[235],"Where it runs",[237],"Desktop, CLI or embedded API",[239],"Terminal only",[241],"Local or Docker, with a web UI",[243,245,247,249],[244],"Licence",[246],"Apache-2.0",[248],"Proprietary",[12],[251,253,255,257],[252],"Tools",[254],"MCP extensions you enable",[256],"Built in, plus MCP",[256],[259,261,263,265],[260],"Model choice",[262],"15+ providers or your own gateway",[264],"Anthropic only",[266],"Bring your own key",[268,270,272,274],[269],"Weakest point",[271],"A runtime on every machine",[273],"One vendor, one price list",[275],"Heavier runtime than a CLI",{"type":114,"content":277},[278],"The trade against the commercial tools is straightforward. Claude Code is a better daily driver: it starts faster, the model quality is the reason people stay, and its permission model comes from the provider instead of being inferred by it. OpenHands wins exactly where goose is weakest, running agent work in a sandbox where the result can be inspected, at the cost of a heavier runtime. Goose wins the two things that matter to a platform team: a licence that permits forking, and a declarative format with an allowlist per recipe that can be enforced across a fleet.",{"type":114,"content":280},[281],"The second structural gap is security depth. There is prompt-injection detection with a configurable threshold, and an adversary mode that runs a separate reviewer agent over tool calls, which is an interesting idea and not a control anyone should rely on alone. Read-only tools execute without approval by default, and extensions run as the developer with the developer's credentials.",{"type":124,"level":125,"id":107,"text":108},{"type":114,"content":284},[285],"Goose is a credible default for a team that wants to own its agent stack, and a poor substitute for a well-configured commercial agent on one laptop. Its real contribution is not the coding loop, which is commodity, but the combination of a foundation-owned licence, a declarative extension allowlist and a recipe format with machine-checkable success criteria. That is the layer organisations keep rebuilding badly on top of someone else's agent.",{"type":130,"ordered":155,"items":287},[288,290,292,294,296],[289],"Adopt it when agents have to run on machines you do not control, or where code cannot leave the network. The binary and its documentation can both be packaged for air-gapped use.",[291],"Adopt it to standardise behaviour across a fleet. The per-recipe extension allowlist and the permission mode are the mechanism, and the recipe file is the artefact you version and review.",[293],"Adopt it as a second opinion. Pointing the same task at two agents with different tools and comparing the diffs is cheap when both are free to run.",[295],"Do not adopt it as a developer's first agent. The install is a script and the first session needs a provider key, so the setup cost lands on whoever has the least time for it.",[297],"Do not switch a working commercial agent over to it. On individual task quality the leaders are still ahead and the surrounding ecosystem is deeper.",{"type":211,"variant":299,"title":300,"body":301},"tip","Whatever you choose",[302],[303],"Run it with the turn limit set and the working tree committed. The documented remedy for a wedged session is to start a new one, which is only painless if the previous changes were already in git.",{"type":124,"level":125,"id":110,"text":111},{"type":130,"ordered":155,"items":306},[307,311,314,317,320,323,326,329,332],[308],{"tag":309,"href":32,"children":310},"a",[31],[312],{"tag":309,"href":35,"children":313},[34],[315],{"tag":309,"href":38,"children":316},[37],[318],{"tag":309,"href":41,"children":319},[40],[321],{"tag":309,"href":44,"children":322},[43],[324],{"tag":309,"href":47,"children":325},[46],[327],{"tag":309,"href":50,"children":328},[49],[330],{"tag":309,"href":53,"children":331},[52],[333],{"tag":309,"href":56,"children":334},[55],[336,393,466,536],{"slug":337,"published":338,"minutes":339,"category":7,"tags":340,"keywords":345,"about":356,"sources":365,"cover":387,"og":388,"expertise":59,"locales":389,"lang":61,"title":390,"description":391,"coverAlt":392},"agent-tool-design-descriptions-errors","2026-10-17",11,[341,342,343,10,344],"AI agents","Tool use","Function calling","Agent design",[346,347,348,349,350,351,352,353,354,355],"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",[357,360,362],{"name":358,"url":359},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":24,"url":361},"https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":363,"url":364},"Poka-yoke","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoka-yoke",[366,369,372,375,378,381,384],{"title":367,"url":368},"Anthropic Engineering: Writing effective tools for agents, with agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fwriting-tools-for-agents",{"title":370,"url":371},"Anthropic Engineering: Building effective agents (Dec 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":373,"url":374},"Claude Platform Docs: Define tools","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fdefine-tools",{"title":376,"url":377},"Claude Platform Docs: Handle tool calls","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fhandle-tool-calls",{"title":379,"url":380},"Claude Platform Docs: Tool search tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Ftool-search-tool",{"title":382,"url":383},"Model Context Protocol specification 2025-11-25: Tools","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fserver\u002Ftools",{"title":385,"url":386},"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",[61,62,63],"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":394,"published":338,"minutes":339,"category":7,"tags":395,"keywords":401,"about":414,"sources":424,"cover":460,"og":461,"expertise":59,"locales":462,"lang":61,"title":463,"description":464,"coverAlt":465},"coding-agents-legacy-codebase-migration",[396,397,398,399,400],"Legacy migration","Coding agents","Strangler fig","Testing","Code review",[402,403,404,405,406,407,408,409,410,411,412,413],"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",[415,418,421],{"name":416,"url":417},"Legacy code","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLegacy_code",{"name":419,"url":420},"Characterization test","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCharacterization_test",{"name":422,"url":423},"Strangler fig pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FStrangler_fig_pattern",[425,428,430,433,436,439,442,445,448,451,454,457],{"title":426,"url":427},"Martin Fowler: Strangler Fig (2024)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FStranglerFigApplication.html",{"title":429,"url":420},"Wikipedia: Characterization test",{"title":431,"url":432},"Google Research: Accelerating code migrations with AI (2024)","https:\u002F\u002Fresearch.google\u002Fblog\u002Faccelerating-code-migrations-with-ai\u002F",{"title":434,"url":435},"Ziftci et al.: Migrating Code At Scale With LLMs At Google (arXiv 2504.09691)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":437,"url":438},"Anthropic: Effective harnesses for long-running agents (2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":440,"url":441},"Anthropic: Redesigning source control at Anthropic (2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fredesigning-source-control",{"title":443,"url":444},"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":446,"url":447},"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":449,"url":450},"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":452,"url":453},"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":455,"url":456},"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":458,"url":459},"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",[61,62,63],"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":467,"published":338,"minutes":468,"category":7,"tags":469,"keywords":473,"about":485,"sources":495,"cover":530,"og":531,"expertise":59,"locales":532,"lang":61,"title":533,"description":534,"coverAlt":535},"background-agents-async-pr-workflow",12,[397,470,471,400,472],"Pull requests","CI","Automation",[474,475,476,477,478,479,480,481,482,483,484],"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",[486,489,492],{"name":487,"url":488},"Software agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_agent",{"name":490,"url":491},"Pull request","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDistributed_version_control",{"name":493,"url":494},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[496,497,500,503,506,509,512,515,518,521,524,527],{"title":458,"url":459},{"title":498,"url":499},"GitHub Docs: Risks and mitigations for Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcloud-agent\u002Frisks-and-mitigations",{"title":501,"url":502},"OpenAI Developers: Codex cloud environments","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcloud\u002Fenvironments",{"title":504,"url":505},"Anthropic: Use Claude Code in the cloud","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fclaude-code-on-the-web",{"title":507,"url":508},"Google Jules: Limits and plans","https:\u002F\u002Fjules.google\u002Fdocs\u002Fusage-limits\u002F",{"title":510,"url":511},"Google Jules: Getting started","https:\u002F\u002Fjules.google\u002Fdocs\u002F",{"title":513,"url":514},"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":516,"url":517},"GitHub Docs: Models and pricing for GitHub Copilot","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Freference\u002Fcopilot-billing\u002Fmodels-and-pricing",{"title":519,"url":520},"OpenAI Developers: Codex pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fpricing",{"title":522,"url":523},"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":525,"url":526},"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":528,"url":529},"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",[61,62,63],"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":537,"published":538,"minutes":6,"category":7,"tags":539,"keywords":545,"about":557,"sources":565,"cover":598,"og":599,"expertise":59,"locales":600,"lang":61,"title":601,"description":602,"coverAlt":603},"context-rot-compaction-long-running-agents","2026-10-16",[540,541,542,543,544],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[546,547,548,549,550,551,552,553,554,555,556],"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",[558,561,564],{"name":559,"url":560},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":562,"url":563},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":358,"url":359},[566,569,572,575,578,580,583,586,589,592,595],{"title":567,"url":568},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":570,"url":571},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":573,"url":574},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":576,"url":577},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":579,"url":438},"Anthropic: Effective harnesses for long-running agents (Nov 2025)",{"title":581,"url":582},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":584,"url":585},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":587,"url":588},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":590,"url":591},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":593,"url":594},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":596,"url":597},"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",[61,62,63],"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.",1792261156241]