[{"data":1,"prerenderedAt":596},["ShallowReactive",2],{"blog-openhands-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":22,"sources":32,"cover":53,"og":54,"expertise":55,"locales":56,"lang":57,"title":60,"description":61,"coverAlt":62,"metaTitle":63,"takeaways":64,"faq":70,"toc":83,"blocks":107,"others":326},"openhands","2026-09-09",9,"agents",[9,10,11,12,13],"Coding agent","Sandboxed execution","Automations","Self-hosted","MIT licence",[4,15,16,17,18,19,20,21],"openhands self-host","open hands coding agent","openhands vs claude code","agent canvas","openhands docker sandbox","open source coding agent","openhands cloud pricing",[23,26,29],{"name":24,"url":25},"OpenHands","https:\u002F\u002Fwww.openhands.dev",{"name":27,"url":28},"OpenHands on GitHub","https:\u002F\u002Fgithub.com\u002FOpenHands\u002FOpenHands",{"name":30,"url":31},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",[33,35,38,41,44,47,50],{"title":34,"url":28},"OpenHands README",{"title":36,"url":37},"OpenHands licence (MIT)","https:\u002F\u002Fgithub.com\u002FOpenHands\u002FOpenHands\u002Fblob\u002Fmain\u002FLICENSE",{"title":39,"url":40},"Agent Canvas 1.25.0 release notes","https:\u002F\u002Fdocs.openhands.dev\u002Fopenhands\u002Fusage\u002Fagent-canvas\u002Frelease-notes\u002Fv1.25.0.md",{"title":42,"url":43},"OpenHands sandbox overview","https:\u002F\u002Fdocs.openhands.dev\u002Fopenhands\u002Fusage\u002Fsandboxes\u002Foverview.md",{"title":45,"url":46},"OpenHands quick start","https:\u002F\u002Fdocs.openhands.dev\u002Fopenhands\u002Fusage\u002Finstallation",{"title":48,"url":49},"OpenHands pricing","https:\u002F\u002Fwww.openhands.dev\u002Fpricing",{"title":51,"url":52},"Introducing the OpenHands Index","https:\u002F\u002Fwww.openhands.dev\u002Fblog\u002Fintroducing-the-openhands-index","\u002Fimages\u002Fblog\u002Fopenhands\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fopenhands\u002Fog.jpg","ai-engineer",[57,58,59],"en","de","hu","OpenHands: the open-source coding agent you operate","OpenHands 1.25.0 is an MIT-licensed coding agent platform with a web canvas, a CLI, sandboxed execution and scheduled automations. A review of where it is strong and where it gets heavy.","A wide panel with three small squares and a narrow strip, both sending arrows into a closed box.","OpenHands review: self-hosted coding agent · Balázs Csorba",[65,66,67,68,69],"OpenHands 1.25.0, released 6 October 2026, is MIT-licensed and splits across four repositories: canvas, agent server, client and automation.","Docker is the recommended sandbox; process mode is documented as unsafe, and one container per conversation needs a single environment variable.","Automations on schedules, GitHub events and webhooks are what separate it from a terminal coding agent.","Models are pluggable through LiteLLM, local servers included, so the harness does not lock you to one vendor.","The model sets the outcome quality, while the harness decides the cost and the blast radius of every run.",[71,74,77,80],{"q":72,"a":73},"Is OpenHands free?","The open-source project is MIT-licensed and free to run. The pricing page lists a free local tier and a free Individual tier for the hosted cloud that can bring your own key or buy models at cost, with custom pricing for SaaS or self-hosting in your own VPC.",{"q":75,"a":76},"What is Agent Canvas?","Agent Canvas is the current web front end: it starts conversations, connects to agent backends and schedules automations. It replaced the older OpenHands web UI naming, while some configuration still uses the legacy RUNTIME environment variable.",{"q":78,"a":79},"Does OpenHands need Docker?","Docker is the recommended sandbox but not required: process mode runs the agent server directly on the host without isolation, and remote sandboxes are used by managed deployments. A container per conversation needs OH_CONVERSATION_RUNTIME=docker.",{"q":81,"a":82},"Which models can OpenHands use?","Any model reachable through LiteLLM, including local servers such as Ollama and vLLM, plus the hosted OpenHands provider. LLM profiles let one conversation switch models mid-task.",[84,87,90,93,96,98,101,104],{"id":85,"title":86},"what-it-is","What it is",{"id":88,"title":89},"how-it-works","How it works",{"id":91,"title":92},"getting-started","Getting started",{"id":94,"title":95},"sandboxing","Sandboxing and blast radius",{"id":97,"title":11},"automations",{"id":99,"title":100},"where-it-shingles","Where it shingles",{"id":102,"title":103},"verdict","Verdict",{"id":105,"title":106},"sources","Sources",[108,112,115,118,121,139,142,143,146,152,155,156,159,162,165,172,173,176,191,197,198,201,213,216,217,220,230,233,278,281,282,285,297,301,302],{"type":109,"content":110},"paragraph",[111],"OpenHands is an MIT-licensed platform for running coding agents: a web front end called Agent Canvas, a CLI, a headless mode, a Python SDK and a REST API, all driving agents that edit files and run commands inside a sandbox. The position of this review: it is the most complete open-source option for teams that want to own the execution environment, and it behaves like a platform under active construction rather than a finished product.",{"type":109,"content":113},[114],"It sits where Claude Code, Codex CLI, Aider and the hosted agents sit, between the model and the repository, but on a different contract: the model is a pluggable dependency instead of a bundled one, and the runtime is your infrastructure instead of a vendor’s. Version 1.25.0 was released on 6 October 2026.",{"type":116,"level":117,"id":85,"text":86},"heading",2,{"type":109,"content":119},[120],"OpenHands began as a single repository and is now four: the Agent Canvas front end and local orchestration in OpenHands\u002FOpenHands, the Python agent server and SDK in software-agent-sdk, a TypeScript client, and a separate automation service. That split is the first thing to understand before adopting it.",{"type":122,"ordered":123,"items":124},"list",false,[125,127,129,131,133,135,137],[126],"MIT licence, with the hosted service sold separately by All Hands AI.",[128],"Version 1.25.0, released 6 October 2026, pinning the agent server and the SDK to 1.53.0.",[130],"Surfaces: the Agent Canvas web UI, an interactive CLI, headless mode for CI, a Python SDK, and a REST API for conversations, events and sandboxes.",[132],"Model agnostic through LiteLLM, with profiles for switching models inside a conversation and local servers such as Ollama and vLLM supported.",[134],"Sandbox providers: Docker as the recommended option, a process mode without container isolation, and remote sandboxes for hosted setups.",[136],"Agent Client Protocol support lets Canvas drive Claude Code, Codex or Gemini CLI as alternative backends.",[138],"Automations run on schedules, GitHub events or webhooks, with prebuilt templates for issue to pull request and pull-request review.",{"type":109,"content":140},[141],"Underneath, the agent server exposes a workspace, a tool set covering bash, file edits, a browser and an interactive terminal, plus skills, hooks and MCP servers. The canvas and the automation service are clients of that API, which is why one conversation can start from a button, a cron job or a webhook.",{"type":116,"level":117,"id":88,"text":89},{"type":109,"content":144},[145],"A conversation is a stream of typed events: the agent proposes an action, the action runs in the sandbox, the observation comes back, and the loop continues until the model stops. The interesting decisions sit at the boundary — which files the workspace exposes, which commands the policy allows, and which model profile pays for the next turn.",{"type":147,"src":148,"alt":149,"wide":150,"caption":151},"image","\u002Fimages\u002Fblog\u002Fopenhands\u002Fdiagram-8.webp","How an OpenHands conversation runs The flow is a loop with five boxes and a guardrail band. Top left, a Task box labelled prompt or issue sends a line right into the Agent box, which plans and calls tools. The Agent box sends a line right into the Sandbox box, which runs a Docker container. Below the Sandbox an Observation box collects stdout and diffs, and a line leaves its bottom, runs left and returns up into the Agent box, closing the loop. On the left, an Automations box labelled cron and events connects upward into the Task box, showing that a schedule or a webhook can start the same loop. A dashed band at the bottom holds the guardrails: skills and hooks shape behaviour, MCP adds tools, a confirmation policy can block actions, Docker is the recommended sandbox, and process mode runs without container isolation.",true,"The loop lives in the agent server, so a button, a cron job and a webhook all reach the same execution path.",{"type":109,"content":153},[154],"Because the loop lives in the agent server rather than in the UI, the same conversation can be started from the canvas, the CLI, a schedule or a webhook, and can be paused, resumed, branched or exported as a trajectory. That is the architectural argument for the project: one execution path with several entry points.",{"type":116,"level":117,"id":91,"text":92},{"type":109,"content":157},[158],"The documented route is Docker: one container publishes the canvas on localhost, mounts a projects directory the agent may reach, and keeps its state in a home directory volume.",{"type":160,"code":161},"code","# one container for the canvas, the agent server and a mounted workspace\nexport PROJECTS_PATH=\"$HOME\u002Fprojects\"\nmkdir -p \"$PROJECTS_PATH\" \"$HOME\u002F.openhands\"\n\ndocker run -it --rm \\\n  -p 127.0.0.1:8000:8000 \\\n  -e AGENT_CANVAS_ALLOW_LAN_SESSION_KEY=true \\\n  -v \"$HOME\u002F.openhands:\u002Fhome\u002Fopenhands\u002F.openhands\" \\\n  -v \"${PROJECTS_PATH}:\u002Fprojects\" \\\n  ghcr.io\u002Fopenhands\u002Fagent-canvas:1.25.0\n\n# open http:\u002F\u002Flocalhost:8000, add a model key, start a conversation",{"type":109,"content":163},[164],"The npm route, npm install -g @openhands\u002Fagent-canvas, needs Node.js 24 and uv and runs the agent server directly on the host; the README warns that this gives the agent full access to the filesystem. The container route is the one to copy into a team setup.",{"type":166,"variant":167,"title":168,"body":169},"callout","warn","Bind it to localhost",[170],[171],"Local listeners bind to 127.0.0.1 so the injected session key is not reachable from other machines, and the README tells you to drop the key-injection variable when publishing on a LAN or a public interface and to set a strong LOCAL_BACKEND_API_KEY instead.",{"type":116,"level":117,"id":94,"text":95},{"type":109,"content":174},[175],"The sandbox is the security boundary, and the docs are blunt about the options: Docker is recommended, process mode is labelled unsafe but fast, and remote sandboxes serve hosted deployments. A sandbox is where commands run and files get edited, so its configuration decides what a prompt can do to a machine.",{"type":122,"ordered":123,"items":177},[178,180,182,187,189],[179],"The Docker sandbox runs the agent server in a container and is the recommended provider on a workstation.",[181],"The process sandbox runs it as a normal process with no container isolation: faster, and only for trusted work.",[183,186],{"tag":160,"children":184},[185],"OH_CONVERSATION_RUNTIME=docker"," gives every conversation its own container, with its own workspace and state.",[188],"Hooks can block dangerous commands and enforce checks before the agent stops, and a confirmation policy can require approval for actions.",[190],"Workspaces are limited to a mounted projects path, so the default container cannot see the rest of the host filesystem.",{"type":166,"variant":192,"title":193,"body":194},"note","Isolation is not permission",[195],[196],"Sandboxing limits where code runs, not what it may reach: network access, mounted secrets and registry credentials still define the blast radius. The self-hosting guide in the repository is the document to read before a canvas leaves localhost.",{"type":116,"level":117,"id":97,"text":11},{"type":109,"content":199},[200],"Automations are the reason to pick this over a terminal agent. A task runs on a schedule or on an event — a GitHub issue, a pull request, a webhook — dispatches a conversation to an agent server, and the result comes back as a comment, a pull request or a Slack message.",{"type":122,"ordered":123,"items":202},[203,205,207,209,211],[204],"Prebuilt templates cover issue to pull request, pull-request review, repository monitoring and a Slack channel monitor.",[206],"Schedules and event triggers share one dashboard, with run history and enable or disable per automation.",[208],"Automations can be exported, imported and synced with a Git repository, so they are edited as files and shared like code.",[210],"Integrations cover Slack, GitHub, Linear, Notion and webhooks; the automation service runs as its own repository and process.",[212],"With a container per conversation, parallel automations do not fight over one workspace.",{"type":109,"content":214},[215],"This is also where the operational cost appears: an always-on canvas, an automation service and per-conversation containers are three more things to watch than a terminal agent. The project’s own use-case pages describe a four-automation pipeline from issue to merge, which is a fair target and an honest amount of machinery.",{"type":116,"level":117,"id":99,"text":100},{"type":109,"content":218},[219],"The weaknesses first: OpenHands moves fast and its surface shows it. Terminology changed from runtimes to sandboxes in V1 while configuration still reads RUNTIME, the front end is now Agent Canvas rather than the older web UI, and the code is spread across four repositories with separately versioned pieces. Teams that pin nothing will find upgrade notes in their tickets.",{"type":122,"ordered":123,"items":221},[222,224,226,228],[223],"API stability: the SDK and the agent server version independently of the canvas, and the 1.25.0 notes pin them to 1.53.0.",[225],"Outcome quality tracks the model: the project’s own OpenHands Index finds small gaps between models on issue resolution and much larger ones across its five-task mix.",[227],"Self-hosted automations need a machine that is always on, plus credential management for GitHub, Slack and the model provider.",[229],"The GUI, the CLI and the canvas overlap, so a team has to choose an entry point instead of inheriting one.",{"type":109,"content":231},[232],"Most of that is managed with discipline rather than avoided: pin the three version numbers together, keep one entry point per team, and read a release note before it reads as an incident.",{"type":234,"head":235,"rows":244},"table",[236,238,240,242],[237],"System",[239],"Where it runs",[241],"Model choice",[243],"Heaviest part",[245,253,262,270],[246,247,249,251],[24],[248],"your Docker, a remote sandbox or a local process",[250],"any provider through LiteLLM, local servers included",[252],"always-on canvas, agent server and containers",[254,256,258,260],[255],"Claude Code",[257],"your terminal, with hooks and CI scripts",[259],"Anthropic models",[261],"almost none",[263,265,267,269],[264],"Aider",[266],"your terminal, with git-aware edits",[268],"many providers, local servers included",[261],[271,273,275,276],[272],"Cline",[274],"a VS Code extension",[268],[277],"an open editor session",{"type":109,"content":279},[280],"The comparison is really about infrastructure. OpenHands buys sandboxed, schedulable, model-agnostic execution and charges for it in always-on services; the terminal agents buy simplicity and give up the control plane.",{"type":116,"level":117,"id":102,"text":103},{"type":109,"content":283},[284],"Adopt OpenHands when the work is unattended: issues that should become pull requests, reviews that should run on every merge, monitors that should watch a repository. For interactive work in one repository, a terminal agent plus a sandbox you already trust is less machinery for the same result.",{"type":122,"ordered":150,"items":286},[287,289,291,293,295],[288],"Use it when the model has to stay a swappable dependency: profiles, LiteLLM providers and local servers are first class, so no single vendor is load-bearing.",[290],"Use it self-hosted when owning the execution environment is the point; the MIT licence and the Docker path make that a supported route rather than a workaround.",[292],"Start with the container install, keep projects mounted from one directory, and treat process mode as a debugging convenience.",[294],"Do not adopt it for a stable API: pin the canvas, the agent server and the SDK together and read each release note before upgrading.",[296],"Do not enable automations you cannot audit: every schedule is an agent holding credentials, so confirmation policies and hooks belong on by default.",{"type":298,"content":299},"quote",[300],"OpenHands is not a tool you run on a project. It is a small platform that runs your agents, and the platform is the part you have to staff.",{"type":116,"level":117,"id":105,"text":106},{"type":122,"ordered":150,"items":303},[304,308,311,314,317,320,323],[305],{"tag":306,"href":28,"children":307},"a",[34],[309],{"tag":306,"href":37,"children":310},[36],[312],{"tag":306,"href":40,"children":313},[39],[315],{"tag":306,"href":43,"children":316},[42],[318],{"tag":306,"href":46,"children":319},[45],[321],{"tag":306,"href":49,"children":322},[48],[324],{"tag":306,"href":52,"children":325},[51],[327,384,457,527],{"slug":328,"published":329,"minutes":330,"category":7,"tags":331,"keywords":337,"about":348,"sources":356,"cover":378,"og":379,"expertise":55,"locales":380,"lang":57,"title":381,"description":382,"coverAlt":383},"agent-tool-design-descriptions-errors","2026-10-17",11,[332,333,334,335,336],"AI agents","Tool use","Function calling","MCP","Agent design",[338,339,340,341,342,343,344,345,346,347],"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",[349,350,353],{"name":30,"url":31},{"name":351,"url":352},"Model Context Protocol","https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":354,"url":355},"Poka-yoke","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoka-yoke",[357,360,363,366,369,372,375],{"title":358,"url":359},"Anthropic Engineering: Writing effective tools for agents, with agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fwriting-tools-for-agents",{"title":361,"url":362},"Anthropic Engineering: Building effective agents (Dec 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":364,"url":365},"Claude Platform Docs: Define tools","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fdefine-tools",{"title":367,"url":368},"Claude Platform Docs: Handle tool calls","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fhandle-tool-calls",{"title":370,"url":371},"Claude Platform Docs: Tool search tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Ftool-search-tool",{"title":373,"url":374},"Model Context Protocol specification 2025-11-25: Tools","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fserver\u002Ftools",{"title":376,"url":377},"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",[57,58,59],"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":385,"published":329,"minutes":330,"category":7,"tags":386,"keywords":392,"about":405,"sources":415,"cover":451,"og":452,"expertise":55,"locales":453,"lang":57,"title":454,"description":455,"coverAlt":456},"coding-agents-legacy-codebase-migration",[387,388,389,390,391],"Legacy migration","Coding agents","Strangler fig","Testing","Code review",[393,394,395,396,397,398,399,400,401,402,403,404],"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",[406,409,412],{"name":407,"url":408},"Legacy code","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLegacy_code",{"name":410,"url":411},"Characterization test","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCharacterization_test",{"name":413,"url":414},"Strangler fig pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FStrangler_fig_pattern",[416,419,421,424,427,430,433,436,439,442,445,448],{"title":417,"url":418},"Martin Fowler: Strangler Fig (2024)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FStranglerFigApplication.html",{"title":420,"url":411},"Wikipedia: Characterization test",{"title":422,"url":423},"Google Research: Accelerating code migrations with AI (2024)","https:\u002F\u002Fresearch.google\u002Fblog\u002Faccelerating-code-migrations-with-ai\u002F",{"title":425,"url":426},"Ziftci et al.: Migrating Code At Scale With LLMs At Google (arXiv 2504.09691)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":428,"url":429},"Anthropic: Effective harnesses for long-running agents (2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":431,"url":432},"Anthropic: Redesigning source control at Anthropic (2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fredesigning-source-control",{"title":434,"url":435},"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":437,"url":438},"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":440,"url":441},"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":443,"url":444},"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":446,"url":447},"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":449,"url":450},"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",[57,58,59],"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":458,"published":329,"minutes":459,"category":7,"tags":460,"keywords":464,"about":476,"sources":486,"cover":521,"og":522,"expertise":55,"locales":523,"lang":57,"title":524,"description":525,"coverAlt":526},"background-agents-async-pr-workflow",12,[388,461,462,391,463],"Pull requests","CI","Automation",[465,466,467,468,469,470,471,472,473,474,475],"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",[477,480,483],{"name":478,"url":479},"Software agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_agent",{"name":481,"url":482},"Pull request","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDistributed_version_control",{"name":484,"url":485},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[487,488,491,494,497,500,503,506,509,512,515,518],{"title":449,"url":450},{"title":489,"url":490},"GitHub Docs: Risks and mitigations for Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcloud-agent\u002Frisks-and-mitigations",{"title":492,"url":493},"OpenAI Developers: Codex cloud environments","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcloud\u002Fenvironments",{"title":495,"url":496},"Anthropic: Use Claude Code in the cloud","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fclaude-code-on-the-web",{"title":498,"url":499},"Google Jules: Limits and plans","https:\u002F\u002Fjules.google\u002Fdocs\u002Fusage-limits\u002F",{"title":501,"url":502},"Google Jules: Getting started","https:\u002F\u002Fjules.google\u002Fdocs\u002F",{"title":504,"url":505},"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":507,"url":508},"GitHub Docs: Models and pricing for GitHub Copilot","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Freference\u002Fcopilot-billing\u002Fmodels-and-pricing",{"title":510,"url":511},"OpenAI Developers: Codex pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fpricing",{"title":513,"url":514},"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":516,"url":517},"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":519,"url":520},"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",[57,58,59],"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":528,"published":529,"minutes":530,"category":7,"tags":531,"keywords":537,"about":549,"sources":557,"cover":590,"og":591,"expertise":55,"locales":592,"lang":57,"title":593,"description":594,"coverAlt":595},"context-rot-compaction-long-running-agents","2026-10-16",10,[532,533,534,535,536],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[538,539,540,541,542,543,544,545,546,547,548],"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",[550,553,556],{"name":551,"url":552},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":554,"url":555},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":30,"url":31},[558,561,564,567,570,572,575,578,581,584,587],{"title":559,"url":560},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":562,"url":563},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":565,"url":566},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":568,"url":569},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":571,"url":429},"Anthropic: Effective harnesses for long-running agents (Nov 2025)",{"title":573,"url":574},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":576,"url":577},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":579,"url":580},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":582,"url":583},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":585,"url":586},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":588,"url":589},"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",[57,58,59],"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.",1792261155904]