[{"data":1,"prerenderedAt":1129},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fclaude-code-hidden-multi-agent-system":204,"\u002Fblog\u002Fclaude-code-hidden-multi-agent-system-surround":1124},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200],{"title":5,"path":6,"stem":7},"You do not have time to not have tests","\u002Fblog\u002Fyou-do-not-have-time-to-not-have-tests","2.blog\u002F20211217.you-do-not-have-time-to-not-have-tests",{"title":9,"path":10,"stem":11},"Migrate Vue 2 with Vuetify and Jest to Vite and Vitest","\u002Fblog\u002Fmigrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest","2.blog\u002F20220109.migrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest",{"title":13,"path":14,"stem":15},"I am a Dark Matter Developer","\u002Fblog\u002Fi-am-a-dark-matter-developer","2.blog\u002F20220626.i-am-a-dark-matter-developer",{"title":17,"path":18,"stem":19},"Why using Conventional commits is useful","\u002Fblog\u002Fusing-conventional-commits","2.blog\u002F20240623.using-conventional-commits",{"title":21,"path":22,"stem":23},"Why you should make a toolbox repository","\u002Fblog\u002Fwhy-you-should-make-a-toolbox-repository","2.blog\u002F20240630.Why-you-should-make-a-toolbox-repository",{"title":25,"path":26,"stem":27},"Apache Airflow Part 1 - Why and Goals for a near Serverless ELT","\u002Fblog\u002Fapache-airflow-part-1-why-and-goals","2.blog\u002F20240710.apache-airflow-part-1-why-and-goals",{"title":29,"path":30,"stem":31},"Oh My Zsh on your server","\u002Fblog\u002Foh-my-zsh-on-your-server","2.blog\u002F20240711.oh-my-zsh-on-your-server",{"title":33,"path":34,"stem":35},"Fire tablet and YouTube Kids","\u002Fblog\u002Ffire-tablet-and-youtube-kids","2.blog\u002F20240714.fire-tablet-and-youtube-kids",{"title":37,"path":38,"stem":39},"Using Ollama and Continue as a GitHub Copilot Alternative","\u002Fblog\u002Fusing-ollama-and-continue-as-github-copilot-alternative","2.blog\u002F20240723.using-ollama-and-continue-as-github-copilot-alternative",{"title":41,"path":42,"stem":43},"Debugging Local Packages Made Easy with pnpm","\u002Fblog\u002Fdebugging-local-packages-with-pnpm-link","2.blog\u002F20250422.debugging local-packages-with-pnpm-link",{"title":45,"path":46,"stem":47},"Two Weeks with Cloudflare AI and Tools","\u002Fblog\u002Ftwo-weeks-with-cloudflare-ai-and-tools","2.blog\u002F20250509.two-weeks-with-cloudflare-aI-and-tools",{"title":49,"path":50,"stem":51},"Adding Prompts to VS Code - How I Learned to Stop Worrying and Love AI Context","\u002Fblog\u002Fadding-prompts-to-vscode","2.blog\u002F20250528.adding-prompts-to-vscode",{"title":53,"path":54,"stem":55},"My Best Practices","\u002Fblog\u002Fmy-best-practicies","2.blog\u002F20250607.my-best-practicies",{"title":57,"path":58,"stem":59},"Creating my own CLI Tool - Towles Tool","\u002Fblog\u002Ftowles-tool","2.blog\u002F20250607.towles-tool",{"title":61,"path":62,"stem":63},"Software Development Best Practices & ITIL","\u002Fblog\u002Fsoftware-engineering-and-itil-best-practices","2.blog\u002F20250612.software-engineering-and-itil-best-practices",{"title":65,"path":66,"stem":67},"Voice to Text","\u002Fblog\u002Fvoice-to-text","2.blog\u002F20250622.voice-to-text",{"title":69,"path":70,"stem":71},"Setting Up ComfyUI - A Better Alternative to Fooocus","\u002Fblog\u002Fcomfy-ui-setup","2.blog\u002F20250628.comfy-ui-setup",{"title":73,"path":74,"stem":75},"Voice to System","\u002Fblog\u002Fvoice-to-system","2.blog\u002F20250705.voice-to-system",{"title":77,"path":78,"stem":79},"Tips for Claude Code","\u002Fblog\u002Ftips-for-claude-code","2.blog\u002F20250713.tips-for-claude-code",{"title":81,"path":82,"stem":83},"Review That AI Code: Why I Read Every Line Generated Code","\u002Fblog\u002Freview-that-ai-code","2.blog\u002F20250720.review-that-ai-code",{"title":85,"path":86,"stem":87},"My Context Engineering Journey: From Dev Scripts to AI Collaboration","\u002Fblog\u002F20250803-1.my-context-engineering-journey","2.blog\u002F20250803-1.my-context-engineering-journey",{"title":89,"path":90,"stem":91},"Context Engineering at Scale: Enterprise Lessons and the Future of Development","\u002Fblog\u002F20250803-2.context-engineering-at-scale","2.blog\u002F20250803-2.context-engineering-at-scale",{"title":93,"path":94,"stem":95},"Check That Your Tools and Linters Do Not Burn Tokens","\u002Fblog\u002Fcheck-that-your-tools-and-linters-do-not-burn-tokens","2.blog\u002F20250806.check-that-your-tools-and-linters-do-not-burn-tokens",{"title":97,"path":98,"stem":99},"Markdown + AI: The Communication Protocol That Changes Everything","\u002Fblog\u002Fmarkdown-plus-ai-the-communication-protocol-that-changes-everything","2.blog\u002F20250814.markdown-plus-ai-the-communication-protocol-that-changes-everything",{"title":101,"path":102,"stem":103},"Finally: Type-Safe AI in Production (And Why I'm Here For It)","\u002Fblog\u002Ffinally-type-safe-ai-in-production-and-why-im-here-for-it","2.blog\u002F20250819.finally-type-safe-ai-in-production-and-why-im-here-for-it",{"title":105,"path":106,"stem":107},"Dotfiles: Masterpiece or Late Stage Picasso?","\u002Fblog\u002Fdotfiles-masterpiece-or-late-stage-picasso","2.blog\u002F20250822.dotfiles-masterpiece-or-late-stage-picasso",{"title":109,"path":110,"stem":111},"Beyond API Wrappers: Building State-Driven MCP Servers for Long-Horizon Agent Orchestration","\u002Fblog\u002Fbeyond-api-wrappers-mcp-servers","2.blog\u002F20250907.beyond-api-wrappers-mcp-servers",{"title":113,"path":114,"stem":115},"Why Vertical Integration Wins: A Software Engineer's Case for Owning Your Stack","\u002Fblog\u002Fwhy-i-bought-tesla-model-3-vertical-integration","2.blog\u002F20250928.why-i-bought-tesla-model-3-vertical-integration",{"title":117,"path":118,"stem":119},"The Min-Maxer's Trifecta: Building Tools for the Game You Actually Play","\u002Fblog\u002Fmin-maxer-trifecta","2.blog\u002F20251004.min-maxer-trifecta",{"title":121,"path":122,"stem":123},"Read The Source: Learning by Cutting Out The Middleman and RTFM","\u002Fblog\u002Fread-the-source","2.blog\u002F20251010.read-the-source",{"title":125,"path":126,"stem":127},"The Exponential Shift: Why AI Progress Feels Different Now","\u002Fblog\u002Fthe-exponential-shift","2.blog\u002F20251015.the-exponential-shift",{"title":129,"path":130,"stem":131},"Plan Mode for Your Problems, Edit Mode for Claude's","\u002Fblog\u002Fplan-mode-problems-edit-mode-solutions","2.blog\u002F20251019.plan-mode-problems-edit-mode-solutions",{"title":133,"path":134,"stem":135},"AWS Aurora DSQL Looked Perfect Until I Needed the Connection String","\u002Fblog\u002Faws-aurora-dsql-postgres-serverless-authentication","2.blog\u002F20251028.aws-aurora-dsql-postgres-serverless-authentication",{"title":137,"path":138,"stem":139},"Switchback: Browser History for Your Thoughts","\u002Fblog\u002Fswitchback-second-order-reasoning","2.blog\u002F20251205.switchback-second-order-reasoning",{"title":141,"path":142,"stem":143},"AI Pairing: Notes to Self","\u002Fblog\u002Fai-pairing-notes-to-self","2.blog\u002F20251216.ai-pairing-notes-to-self",{"title":145,"path":146,"stem":147},"I've Been Sleeping on Zellij","\u002Fblog\u002Fsleeping-on-zellij","2.blog\u002F20251229.sleeping-on-zellij",{"title":149,"path":150,"stem":151},"Implementing a Ralph Wiggum Loop: The Secret is Session Markers","\u002Fblog\u002Fimplementing-ralph-wiggum-loop-for-autonomous-ai-coding","2.blog\u002F20260114.implementing-ralph-wiggum-loop-for-autonomous-ai-coding",{"title":153,"path":154,"stem":155},"Goodhart's Law Ate My Context Window","\u002Fblog\u002Fgoodharts-law-ate-my-context-window","2.blog\u002F20260119.goodharts-law-ate-my-context-window",{"title":157,"path":158,"stem":159},"Claude Code's Hidden Multi-Agent System Is Real","\u002Fblog\u002Fclaude-code-hidden-multi-agent-system","2.blog\u002F20260124.claude-code-hidden-multi-agent-system",{"title":161,"path":162,"stem":163},"Free Printable Math Sheets for Kids — Number Chart, Skip Counting, Multiplication, and More","\u002Fblog\u002Ffree-printable-number-chart-and-coin-sheets","2.blog\u002F20260214.free-printable-number-chart-and-coin-sheets",{"title":165,"path":166,"stem":167},"We Are Near the End of the Exponential","\u002Fblog\u002Fnear-the-end-of-the-exponential","2.blog\u002F20260214.near-the-end-of-the-exponential",{"title":169,"path":170,"stem":171},"Free Printable Language Arts Sheets for Kids — Sight Words, Parts of Speech, Homophones, and More","\u002Fblog\u002Ffree-printable-sight-words-and-grammar-sheets","2.blog\u002F20260215.free-printable-sight-words-and-grammar-sheets",{"title":173,"path":174,"stem":175},"Interactive Code Execution with Artifacts","\u002Fblog\u002Finteractive-code-execution-with-artifacts","2.blog\u002F20260215.interactive-code-execution-with-artifacts",{"title":177,"path":178,"stem":179},"Free Printable Telling Time Worksheet for Kids — Clock Reference & Practice Sheet","\u002Fblog\u002Ffree-printable-telling-time-worksheet","2.blog\u002F20260216.free-printable-telling-time-worksheet",{"title":181,"path":182,"stem":183},"Claude Code Skills: Teaching AI Your Playbook","\u002Fblog\u002Fclaude-code-skills-guide","2.blog\u002F20260221.claude-code-skills-guide",{"title":185,"path":186,"stem":187},"Building a Multi-Agent Loan Approval System with Human-in-the-Loop","\u002Fblog\u002Fmulti-agent-loan-approval-human-in-the-loop","2.blog\u002F20260225.multi-agent-loan-approval-human-in-the-loop",{"title":189,"path":190,"stem":191},"The Inception of AI Infrastructure: Bottlenecks All the Way Down","\u002Fblog\u002Fbiggest-bottleneck-scaling-ai-compute","2.blog\u002F20260313.biggest-bottleneck-scaling-ai-compute",{"title":193,"path":194,"stem":195},"What I Tell Teams About Claude Code","\u002Fblog\u002Fwhat-i-tell-teams-about-claude-code","2.blog\u002F20260314.what-i-tell-teams-about-claude-code",{"title":197,"path":198,"stem":199},"The Hardest Part of AI Isn't the AI","\u002Fblog\u002Fthe-hardest-part-of-ai-isnt-the-ai","2.blog\u002F20260327.the-hardest-part-of-ai-isnt-the-ai",{"title":201,"path":202,"stem":203},"Claude Code Hooks: The Capability I Left on the Table","\u002Fblog\u002Fclaude-code-hooks-capability-left-on-the-table","2.blog\u002F20260401.claude-code-hooks-capability-left-on-the-table",{"id":205,"title":157,"authors":206,"badge":212,"body":214,"date":1114,"description":1115,"extension":1116,"image":1117,"meta":1120,"navigation":590,"path":158,"seo":1121,"status":1122,"stem":159,"__hash__":1123},"posts\u002F2.blog\u002F20260124.claude-code-hidden-multi-agent-system.md",[207],{"name":208,"to":209,"avatar":210},"Chris Towles","https:\u002F\u002Ftwitter.com\u002FChris_Towles",{"src":211},"\u002Fimages\u002Fctowles-profile-512x512.png",{"label":213},"Claude Code",{"type":215,"value":216,"toc":1090},"minimark",[217,229,232,237,245,251,265,269,272,279,379,382,386,391,394,405,413,421,427,435,441,445,448,516,520,523,545,548,552,555,559,679,683,772,776,834,838,841,845,881,885,974,978,1007,1014,1018,1022,1025,1029,1035,1066,1070,1078,1086],[218,219,220,221,228],"p",{},"Spining up agent swarms are everywhere right now. Wilson Lin showed us with ",[222,223,227],"a",{"href":224,"rel":225},"https:\u002F\u002Fgithub.com\u002Fwilsonzlin\u002Ffastrender",[226],"nofollow","FastRender"," that an agent swarm could even build a web browser from scratch! The whole ecosystem is converging on multi-agent architectures for complex tasks. So when I saw a tweet claiming Claude Code already has a hidden multi-agent system baked in, my first thought wasn't \"no way\" - it was \"already?\"",[218,230,231],{},"Turns out: yes. Already.",[233,234,236],"h2",{"id":235},"the-claim","The Claim",[218,238,239,244],{},[222,240,243],{"href":241,"rel":242},"https:\u002F\u002Fx.com\u002Fkieranklaassen\u002Fstatus\u002F2014830266515382693",[226],"Kieran Klaassen"," posted on January 23rd:",[246,247,248],"blockquote",{},[218,249,250],{},"I think I found a hidden Claude Code feature! TLDR: It's a built‑in multi‑agent team system in Claude Code. TeammateTool lets you create teams, let agents join, message each other, approve plans, and shut down the team — but it's feature‑flagged and not enabled for most users yet.",[218,252,253,254,259,260,264],{},"He included a ",[222,255,258],{"href":256,"rel":257},"https:\u002F\u002Fgist.github.com\u002Fkieranklaassen\u002Fd2b35569be2c7f1412c64861a219d51f",[226],"gist documenting what he found"," by running ",[261,262,263],"code",{},"strings"," on the Claude Code binary. Bold claim. Let's verify it.",[233,266,268],{"id":267},"the-verification","The Verification",[218,270,271],{},"I couldn't just trust the tweet, sorry Kieran, so i had to verify!",[218,273,274,275,278],{},"Claude Code stores its binaries in ",[261,276,277],{},"~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F",". I'm running v2.1.19:",[280,281,286],"pre",{"className":282,"code":283,"language":284,"meta":285,"style":285},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","$ strings ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.1.19 | grep -E \"CLAUDE_CODE_(TEAM|AGENT)\" | sort -u\nCLAUDE_CODE_AGENT_ID\nCLAUDE_CODE_AGENT_NAME\nCLAUDE_CODE_AGENT_SWARMS\nCLAUDE_CODE_AGENT_TYPE\nCLAUDE_CODE_TEAMMATE_COMMAND\nCLAUDE_CODE_TEAM_NAME\nCLAUDE_CODE_PLAN_MODE_REQUIRED\nCLAUDE_CODE_SUBAGENT_MODEL\n","bash","",[261,287,288,331,337,343,349,355,361,367,373],{"__ignoreMap":285},[289,290,293,297,301,304,308,311,314,317,320,323,325,328],"span",{"class":291,"line":292},"line",1,[289,294,296],{"class":295},"sBMFI","$",[289,298,300],{"class":299},"sfazB"," strings",[289,302,303],{"class":299}," ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.1.19",[289,305,307],{"class":306},"sMK4o"," |",[289,309,310],{"class":295}," grep",[289,312,313],{"class":299}," -E",[289,315,316],{"class":306}," \"",[289,318,319],{"class":299},"CLAUDE_CODE_(TEAM|AGENT)",[289,321,322],{"class":306},"\"",[289,324,307],{"class":306},[289,326,327],{"class":295}," sort",[289,329,330],{"class":299}," -u\n",[289,332,334],{"class":291,"line":333},2,[289,335,336],{"class":295},"CLAUDE_CODE_AGENT_ID\n",[289,338,340],{"class":291,"line":339},3,[289,341,342],{"class":295},"CLAUDE_CODE_AGENT_NAME\n",[289,344,346],{"class":291,"line":345},4,[289,347,348],{"class":295},"CLAUDE_CODE_AGENT_SWARMS\n",[289,350,352],{"class":291,"line":351},5,[289,353,354],{"class":295},"CLAUDE_CODE_AGENT_TYPE\n",[289,356,358],{"class":291,"line":357},6,[289,359,360],{"class":295},"CLAUDE_CODE_TEAMMATE_COMMAND\n",[289,362,364],{"class":291,"line":363},7,[289,365,366],{"class":295},"CLAUDE_CODE_TEAM_NAME\n",[289,368,370],{"class":291,"line":369},8,[289,371,372],{"class":295},"CLAUDE_CODE_PLAN_MODE_REQUIRED\n",[289,374,376],{"class":291,"line":375},9,[289,377,378],{"class":295},"CLAUDE_CODE_SUBAGENT_MODEL\n",[218,380,381],{},"That's not accidental naming. Let's dig deeper.",[233,383,385],{"id":384},"what-i-found","What I Found",[387,388,390],"h3",{"id":389},"the-prompts","The Prompts",[218,392,393],{},"Buried in the binary are complete system prompts for team members:",[218,395,396,400,401,404],{},[397,398,399],"strong",{},"Teammate Prompt:"," (",[261,402,403],{},"strings $BINARY | grep -A 10 \"You are a teammate in team\"",")",[280,406,411],{"className":407,"code":409,"language":410},[408],"language-text","You are a teammate in team \"${teamName}\".\n**Your Identity:** Name: ${agentName}\n**Team Resources:**\n- Team config: ${teamConfigPath}\n- Task list: ${taskListPath}\n**Team Leader:** The team lead's name is \"team-lead\".\nSend updates and completion notifications to them.\n","text",[261,412,409],{"__ignoreMap":285},[218,414,415,400,418,404],{},[397,416,417],{},"Delegate Mode Prompt:",[261,419,420],{},"strings $BINARY | grep -A 10 \"You are in delegate mode\"",[280,422,425],{"className":423,"code":424,"language":410},[408],"You are in delegate mode for team \"${teamName}\".\nIn this mode, you can ONLY use the following tools:\n- TeammateTool: For spawning teammates, sending messages, and team coordination\n- TaskCreate, TaskGet, TaskUpdate, TaskList\n\nYou CANNOT use any other tools (Bash, Read, Write, Edit, etc.)\nuntil you exit delegate mode.\n",[261,426,424],{"__ignoreMap":285},[218,428,429,400,432,404],{},[397,430,431],{},"Shutdown Protocol:",[261,433,434],{},"strings $BINARY | grep -A 10 \"You are running in non-interactive\"",[280,436,439],{"className":437,"code":438,"language":410},[408],"You are running in non-interactive mode and cannot return\na response to the user until your team is shut down.\n\nYou MUST shut down your team before preparing your final response:\n1. Use requestShutdown to ask each team member to shut down gracefully\n2. Wait for shutdown approvals\n3. Use the cleanup operation to clean up the team\n",[261,440,438],{"__ignoreMap":285},[387,442,444],{"id":443},"the-operations","The Operations",[218,446,447],{},"The TeammateTool supports these operations:",[449,450,451,458,464,477,483,489,501,510],"ul",{},[452,453,454,457],"li",{},[261,455,456],{},"spawnTeam"," - Create a new team with task list",[452,459,460,463],{},[261,461,462],{},"discoverTeams"," - Find existing teams",[452,465,466,469,470,469,473,476],{},[261,467,468],{},"requestJoin",", ",[261,471,472],{},"approveJoin",[261,474,475],{},"rejectJoin"," - Membership management",[452,478,479,482],{},[261,480,481],{},"write"," - Direct message to teammate",[452,484,485,488],{},[261,486,487],{},"broadcast"," - Message all teammates",[452,490,491,469,494,469,497,500],{},[261,492,493],{},"requestShutdown",[261,495,496],{},"approveShutdown",[261,498,499],{},"rejectShutdown"," - Graceful termination",[452,502,503,469,506,509],{},[261,504,505],{},"approvePlan",[261,507,508],{},"rejectPlan"," - Plan approval workflow",[452,511,512,515],{},[261,513,514],{},"cleanup"," - Team cleanup",[387,517,519],{"id":518},"the-tier-gating","The Tier Gating",[218,521,522],{},"Found this in the binary:",[280,524,528],{"className":525,"code":526,"language":527,"meta":285,"style":285},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","if (H === 'max' && $ === 'default_claude_max_20x') return 3;\nif (H === 'enterprise' || H === 'team') return 3;\nreturn 1;\n","javascript",[261,529,530,535,540],{"__ignoreMap":285},[289,531,532],{"class":291,"line":292},[289,533,534],{},"if (H === 'max' && $ === 'default_claude_max_20x') return 3;\n",[289,536,537],{"class":291,"line":333},[289,538,539],{},"if (H === 'enterprise' || H === 'team') return 3;\n",[289,541,542],{"class":291,"line":339},[289,543,544],{},"return 1;\n",[218,546,547],{},"Translation: Max and Enterprise tiers get 3 agents. Everyone else gets 1 (effectively disabled).",[233,549,551],{"id":550},"the-architecture","The Architecture",[218,553,554],{},"Based on the code, here's how the system is structured:",[387,556,558],{"id":557},"team-structure","Team Structure",[280,560,564],{"className":561,"code":562,"language":563,"meta":285,"style":285},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart LR\n    subgraph Orchestrator\n        Lead[team-lead]\n    end\n\n    subgraph Workers\n        W1[teammate-1]\n        W2[teammate-2]\n        W3[teammate-3]\n    end\n\n    subgraph Storage[\"~\u002F.claude\u002Fteams\u002F\"]\n        Tasks[(task-list.json)]\n    end\n\n    Lead -->|spawns| W1\n    Lead -->|spawns| W2\n    Lead -->|spawns| W3\n\n    W1 & W2 & W3 -->|claim| Tasks\n    W1 & W2 & W3 -.->|done| Lead\n","mermaid",[261,565,566,571,576,581,586,592,597,602,607,612,617,622,628,634,639,644,650,656,662,667,673],{"__ignoreMap":285},[289,567,568],{"class":291,"line":292},[289,569,570],{},"flowchart LR\n",[289,572,573],{"class":291,"line":333},[289,574,575],{},"    subgraph Orchestrator\n",[289,577,578],{"class":291,"line":339},[289,579,580],{},"        Lead[team-lead]\n",[289,582,583],{"class":291,"line":345},[289,584,585],{},"    end\n",[289,587,588],{"class":291,"line":351},[289,589,591],{"emptyLinePlaceholder":590},true,"\n",[289,593,594],{"class":291,"line":357},[289,595,596],{},"    subgraph Workers\n",[289,598,599],{"class":291,"line":363},[289,600,601],{},"        W1[teammate-1]\n",[289,603,604],{"class":291,"line":369},[289,605,606],{},"        W2[teammate-2]\n",[289,608,609],{"class":291,"line":375},[289,610,611],{},"        W3[teammate-3]\n",[289,613,615],{"class":291,"line":614},10,[289,616,585],{},[289,618,620],{"class":291,"line":619},11,[289,621,591],{"emptyLinePlaceholder":590},[289,623,625],{"class":291,"line":624},12,[289,626,627],{},"    subgraph Storage[\"~\u002F.claude\u002Fteams\u002F\"]\n",[289,629,631],{"class":291,"line":630},13,[289,632,633],{},"        Tasks[(task-list.json)]\n",[289,635,637],{"class":291,"line":636},14,[289,638,585],{},[289,640,642],{"class":291,"line":641},15,[289,643,591],{"emptyLinePlaceholder":590},[289,645,647],{"class":291,"line":646},16,[289,648,649],{},"    Lead -->|spawns| W1\n",[289,651,653],{"class":291,"line":652},17,[289,654,655],{},"    Lead -->|spawns| W2\n",[289,657,659],{"class":291,"line":658},18,[289,660,661],{},"    Lead -->|spawns| W3\n",[289,663,665],{"class":291,"line":664},19,[289,666,591],{"emptyLinePlaceholder":590},[289,668,670],{"class":291,"line":669},20,[289,671,672],{},"    W1 & W2 & W3 -->|claim| Tasks\n",[289,674,676],{"class":291,"line":675},21,[289,677,678],{},"    W1 & W2 & W3 -.->|done| Lead\n",[387,680,682],{"id":681},"delegate-mode-flow","Delegate Mode Flow",[280,684,686],{"className":561,"code":685,"language":563,"meta":285,"style":285},"flowchart TB\n    Start([Start]) --> Normal\n\n    subgraph Normal[Normal Mode]\n        All[All tools available]\n    end\n\n    Normal -->|enter delegate| Delegate\n\n    subgraph Delegate[Delegate Mode]\n        direction LR\n        Spawn[spawnTeam]\n        Msg[write\u002Fbroadcast]\n        Task[TaskCreate\u002FUpdate]\n    end\n\n    Delegate -->|exit delegate| Normal\n    Delegate -->|restricted| Note[No Bash, Read,\u003Cbr\u002F>Write, Edit]\n",[261,687,688,693,698,702,707,712,716,720,725,729,734,739,744,749,754,758,762,767],{"__ignoreMap":285},[289,689,690],{"class":291,"line":292},[289,691,692],{},"flowchart TB\n",[289,694,695],{"class":291,"line":333},[289,696,697],{},"    Start([Start]) --> Normal\n",[289,699,700],{"class":291,"line":339},[289,701,591],{"emptyLinePlaceholder":590},[289,703,704],{"class":291,"line":345},[289,705,706],{},"    subgraph Normal[Normal Mode]\n",[289,708,709],{"class":291,"line":351},[289,710,711],{},"        All[All tools available]\n",[289,713,714],{"class":291,"line":357},[289,715,585],{},[289,717,718],{"class":291,"line":363},[289,719,591],{"emptyLinePlaceholder":590},[289,721,722],{"class":291,"line":369},[289,723,724],{},"    Normal -->|enter delegate| Delegate\n",[289,726,727],{"class":291,"line":375},[289,728,591],{"emptyLinePlaceholder":590},[289,730,731],{"class":291,"line":614},[289,732,733],{},"    subgraph Delegate[Delegate Mode]\n",[289,735,736],{"class":291,"line":619},[289,737,738],{},"        direction LR\n",[289,740,741],{"class":291,"line":624},[289,742,743],{},"        Spawn[spawnTeam]\n",[289,745,746],{"class":291,"line":630},[289,747,748],{},"        Msg[write\u002Fbroadcast]\n",[289,750,751],{"class":291,"line":636},[289,752,753],{},"        Task[TaskCreate\u002FUpdate]\n",[289,755,756],{"class":291,"line":641},[289,757,585],{},[289,759,760],{"class":291,"line":646},[289,761,591],{"emptyLinePlaceholder":590},[289,763,764],{"class":291,"line":652},[289,765,766],{},"    Delegate -->|exit delegate| Normal\n",[289,768,769],{"class":291,"line":658},[289,770,771],{},"    Delegate -->|restricted| Note[No Bash, Read,\u003Cbr\u002F>Write, Edit]\n",[387,773,775],{"id":774},"shutdown-protocol","Shutdown Protocol",[280,777,779],{"className":561,"code":778,"language":563,"meta":285,"style":285},"sequenceDiagram\n    participant L as team-lead\n    participant W as teammates\n    participant U as User\n\n    Note over L,U: User blocked until shutdown complete\n\n    L->>W: requestShutdown\n    W-->>L: approveShutdown\n    L->>L: cleanup()\n    L->>U: Final response\n",[261,780,781,786,791,796,801,805,810,814,819,824,829],{"__ignoreMap":285},[289,782,783],{"class":291,"line":292},[289,784,785],{},"sequenceDiagram\n",[289,787,788],{"class":291,"line":333},[289,789,790],{},"    participant L as team-lead\n",[289,792,793],{"class":291,"line":339},[289,794,795],{},"    participant W as teammates\n",[289,797,798],{"class":291,"line":345},[289,799,800],{},"    participant U as User\n",[289,802,803],{"class":291,"line":351},[289,804,591],{"emptyLinePlaceholder":590},[289,806,807],{"class":291,"line":357},[289,808,809],{},"    Note over L,U: User blocked until shutdown complete\n",[289,811,812],{"class":291,"line":363},[289,813,591],{"emptyLinePlaceholder":590},[289,815,816],{"class":291,"line":369},[289,817,818],{},"    L->>W: requestShutdown\n",[289,820,821],{"class":291,"line":375},[289,822,823],{},"    W-->>L: approveShutdown\n",[289,825,826],{"class":291,"line":614},[289,827,828],{},"    L->>L: cleanup()\n",[289,830,831],{"class":291,"line":619},[289,832,833],{},"    L->>U: Final response\n",[233,835,837],{"id":836},"verify-it-yourself","Verify It Yourself",[218,839,840],{},"Want to confirm this on your own machine? Here's how:",[387,842,844],{"id":843},"find-your-binary","Find Your Binary",[280,846,848],{"className":282,"code":847,"language":284,"meta":285,"style":285},"# Check your version\nclaude --version\n\n# Find where binaries live\nls ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\n",[261,849,850,856,864,868,873],{"__ignoreMap":285},[289,851,852],{"class":291,"line":292},[289,853,855],{"class":854},"sHwdD","# Check your version\n",[289,857,858,861],{"class":291,"line":333},[289,859,860],{"class":295},"claude",[289,862,863],{"class":299}," --version\n",[289,865,866],{"class":291,"line":339},[289,867,591],{"emptyLinePlaceholder":590},[289,869,870],{"class":291,"line":345},[289,871,872],{"class":854},"# Find where binaries live\n",[289,874,875,878],{"class":291,"line":351},[289,876,877],{"class":295},"ls",[289,879,880],{"class":299}," ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\n",[387,882,884],{"id":883},"search-for-team-functions","Search for Team Functions",[280,886,888],{"className":282,"code":887,"language":284,"meta":285,"style":285},"# Find environment variables\nstrings ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.1.19 | grep -E \"CLAUDE_CODE_(TEAM|AGENT)\" | sort -u\n\n# Find teammate prompts\nstrings ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.1.19 | grep \"You are a teammate\"\n\n# Find TeammateTool operations\nstrings ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.1.19 | grep -E \"spawnTeam|requestShutdown|broadcast\"\n",[261,889,890,895,919,923,928,946,950,955],{"__ignoreMap":285},[289,891,892],{"class":291,"line":292},[289,893,894],{"class":854},"# Find environment variables\n",[289,896,897,899,901,903,905,907,909,911,913,915,917],{"class":291,"line":333},[289,898,263],{"class":295},[289,900,303],{"class":299},[289,902,307],{"class":306},[289,904,310],{"class":295},[289,906,313],{"class":299},[289,908,316],{"class":306},[289,910,319],{"class":299},[289,912,322],{"class":306},[289,914,307],{"class":306},[289,916,327],{"class":295},[289,918,330],{"class":299},[289,920,921],{"class":291,"line":339},[289,922,591],{"emptyLinePlaceholder":590},[289,924,925],{"class":291,"line":345},[289,926,927],{"class":854},"# Find teammate prompts\n",[289,929,930,932,934,936,938,940,943],{"class":291,"line":351},[289,931,263],{"class":295},[289,933,303],{"class":299},[289,935,307],{"class":306},[289,937,310],{"class":295},[289,939,316],{"class":306},[289,941,942],{"class":299},"You are a teammate",[289,944,945],{"class":306},"\"\n",[289,947,948],{"class":291,"line":357},[289,949,591],{"emptyLinePlaceholder":590},[289,951,952],{"class":291,"line":363},[289,953,954],{"class":854},"# Find TeammateTool operations\n",[289,956,957,959,961,963,965,967,969,972],{"class":291,"line":369},[289,958,263],{"class":295},[289,960,303],{"class":299},[289,962,307],{"class":306},[289,964,310],{"class":295},[289,966,313],{"class":299},[289,968,316],{"class":306},[289,970,971],{"class":299},"spawnTeam|requestShutdown|broadcast",[289,973,945],{"class":306},[387,975,977],{"id":976},"check-for-tier-gating","Check for Tier Gating",[280,979,981],{"className":282,"code":980,"language":284,"meta":285,"style":285},"# Look for the agent count logic\nstrings ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.1.19 | grep -E \"max.*enterprise|AGENT_COUNT\"\n",[261,982,983,988],{"__ignoreMap":285},[289,984,985],{"class":291,"line":292},[289,986,987],{"class":854},"# Look for the agent count logic\n",[289,989,990,992,994,996,998,1000,1002,1005],{"class":291,"line":333},[289,991,263],{"class":295},[289,993,303],{"class":299},[289,995,307],{"class":306},[289,997,310],{"class":295},[289,999,313],{"class":299},[289,1001,316],{"class":306},[289,1003,1004],{"class":299},"max.*enterprise|AGENT_COUNT",[289,1006,945],{"class":306},[218,1008,1009,1010,1013],{},"Replace ",[261,1011,1012],{},"2.1.19"," with your version number.",[233,1015,1017],{"id":1016},"what-this-means","What This Means",[387,1019,1021],{"id":1020},"its-real-and-complete","It's Real and Complete",[218,1023,1024],{},"This isn't stub code or a prototype. The prompts are polished. The shutdown protocol is thoughtful - teammates can't just vanish, they have to gracefully terminate. There's a delegate mode that restricts the leader to coordination-only tools. This already looks pretty polished.",[387,1026,1028],{"id":1027},"the-design-reveals-intent","The Design Reveals Intent",[218,1030,1031,1032,404],{},"The architecture tells us what Anthropic thinks multi-agent workflow looks like and its very close to the Wilson Lin examples. (",[222,1033,224],{"href":224,"rel":1034},[226],[1036,1037,1038,1054,1060],"ol",{},[452,1039,1040,1043,1044,1049,1050],{},[397,1041,1042],{},"Shared task list"," - Teammates don't get private instructions. They pull from a common queue. This prevents the \"telephone game\" problem where agents pass increasingly garbled context to each other. Anthropic just ",[222,1045,1048],{"href":1046,"rel":1047},"https:\u002F\u002Fx.com\u002Ftrq212\u002Fstatus\u002F2014480496013803643",[226],"shipped this with Tasks"," the day before Kieran's discovery: ",[1051,1052,1053],"em",{},"\"Tasks are stored in the file system so that multiple subagents or sessions can collaborate on them. When one session updates a Task, that is broadcasted to all sessions currently working on the same Task List.\"",[452,1055,1056,1059],{},[397,1057,1058],{},"Explicit coordination mode"," - The team lead can't directly edit files while coordinating. They have to delegate. This enforces clean separation between orchestration and execution.",[452,1061,1062,1065],{},[397,1063,1064],{},"Idle notifications"," - Workers automatically ping the leader when they finish. The leader doesn't have to poll.",[387,1067,1069],{"id":1068},"where-this-is-going","Where This Is Going",[218,1071,1072,1073,1077],{},"With Tasks already shipping and TeammateTool waiting in the wings, the pieces are falling into place. The architecture is thoughtful - shared task queues, explicit coordination modes, idle notifications. Its elegant in its simpliestiy, matching observations from others like Cursor ",[222,1074,1075],{"href":1075,"rel":1076},"https:\u002F\u002Fcursor.com\u002Fblog\u002Fscaling-agents",[226],"\nThe future of AI coding isn't one agent doing everything sequentially. It's specialized agents collaborating on shared work, each doing what they're best at. And that future is closer than most people realize.",[218,1079,1080,1081],{},"What are you shipping in 2026? ",[222,1082,1085],{"href":1083,"rel":1084},"https:\u002F\u002Fx.com\u002Ftrq212\u002Fstatus\u002F2010895204405092647",[226],"Why not today?",[1087,1088,1089],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":285,"searchDepth":333,"depth":333,"links":1091},[1092,1093,1094,1099,1104,1109],{"id":235,"depth":333,"text":236},{"id":267,"depth":333,"text":268},{"id":384,"depth":333,"text":385,"children":1095},[1096,1097,1098],{"id":389,"depth":339,"text":390},{"id":443,"depth":339,"text":444},{"id":518,"depth":339,"text":519},{"id":550,"depth":333,"text":551,"children":1100},[1101,1102,1103],{"id":557,"depth":339,"text":558},{"id":681,"depth":339,"text":682},{"id":774,"depth":339,"text":775},{"id":836,"depth":333,"text":837,"children":1105},[1106,1107,1108],{"id":843,"depth":339,"text":844},{"id":883,"depth":339,"text":884},{"id":976,"depth":339,"text":977},{"id":1016,"depth":333,"text":1017,"children":1110},[1111,1112,1113],{"id":1020,"depth":339,"text":1021},{"id":1027,"depth":339,"text":1028},{"id":1068,"depth":339,"text":1069},"2026-01-24","I verified the claim - there's a fully-implemented TeammateTool hiding in Claude Code, feature-flagged but ready to go.","md",{"src":1118,"alt":1119},"\u002Fimages\u002Fblog\u002F20260124-1200-claude-code-hidden-multi-agent-system.jpeg","A dramatic overhead view of a central glowing orchestrator node connected by luminous data streams to three specialized worker nodes arranged in a triangle formation, floating above a dark terminal screen showing binary code and system strings. The orchestrator pulses with warm amber light while the workers glow cool cyan, their connections forming a constellation of collaboration. Cinematic lighting with deep shadows and volumetric light rays cutting through a subtle digital fog, photorealistic 8k quality with shallow depth of field focusing on the central node. Sci-fi atmosphere, high contrast teal and orange color grading, 16:9 composition with negative space on the left for text overlay.",{"draft":590},{"title":157,"description":1115},"published","grLEfvHK1n3Wq8VMqA1Qx7gTjupq3IegOdR9iFDvwLI",[1125,1127],{"title":153,"path":154,"stem":155,"description":1126,"status":1122,"children":-1},"I optimized my AI coding loop for the wrong thing. It looked fast. It wasn't effective.",{"title":161,"path":162,"stem":163,"description":1128,"status":1122,"children":-1},"Free printable PDF worksheets for kids — a 1-120 number chart, skip counting, multiplication table, number bonds, and a US coin reference sheet. Download, print, and learn.",1776221196452]