[BUG] When Claude Code is running a Task tool and a sub-agent is processing something, something happens and Claude Code crashes.

Resolved 💬 6 comments Opened Jul 12, 2025 by Rokurolize Closed Jan 5, 2026

Environment

  • Platform (select one):
  • [x] Anthropic API
  • [ ] AWS Bedrock
  • [ ] Other: <!-- specify -->
  • [ ] Google Vertex AI
  • Claude CLI version: 1.0.51 (Claude Code)
  • Operating System: Ubuntu 24.04.2 LTS (Windows 11, WSL2)
  • Terminal: bash

Bug Description

Steps to Reproduce

Expected Behavior

Actual Behavior

Additional Context

Here is the full crash log from the terminal:

file:///home/ubuntu/.nvm/versions/node/v22.17.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:627
`),D.add(A.uuid)}}async getAllTranscripts(){await this.loadAllSessions();let A=[...this.messages.values()],B=new Set(A.map((Q)=>Q.parentUuid));return A.filter((Q)=>!B.has(Q.uuid)).map((Q)=>this.getTranscript(Q)).filter((Q)=>Q.length)}getTranscript(A){let B=[],Q=A;while(Q)B.unshift(Q),Q=Q.parentUuid?this.messages.get(Q.parentUuid):void 0;return B}async getLastLog(A){let{messages:B}=await hu1(A);if(B.size===0)return null;let D=Array.from(B.values()).sort((G,F)=>new Date(F.timestamp).getTime()-new Date(G.timestamp).getTime())[0];if(!D)return null;let I=[],Z=D;while(Z)I.unshift(Z),Z=Z.parentUuid?B.get(Z.parentUuid):void 0;return I}getAllCheckpoints(A){let B=new Map,Q=A[A.length-1]?.sessionId;if(Q){let D=this.checkpoints.get(Q)?.values()||[];for(let I of D)B.set(I.commit,I)}return Array.from(B.values())}loadAllSessions=L0(async()=>{let A=rF1(vu1),B=v1();if(this.didLoad)return this;try{B.statSync(A)}catch{return this}let D=B.readdirSync(A).filter((Z)=>Z.isFile()&&Z.name.endsWith(".jsonl")).map((Z)=>Ko(A,Z.name)),I=await Promise.all(D.sort((Z,G)=>{let F=B.statSync(Z),Y=B.statSync(G);return F.mtime.getTime()-Y.mtime.getTime()}).map(async(Z)=>{let G=PK(M9Q(Z,".jsonl"));if(!G)return{sessionId:G,sessionMessages:new Set};let F=new Map,Y=new Map,W=new Map;try{await B.stat(Z);for(let J of await zy1(Z))if(J.type==="user"||J.type==="assistant"||J.type==="attachment"||J.type==="system")F.set(J.uuid,J);else if(J.type==="summary"&&J.leafUuid)Y.set(J.leafUuid,J.summary);else if(J.type==="checkpoint")W.set(J.commit,J)}catch{}return{sessionId:G,sessionMessages:F,summaries:Y,checkpoints:W}}));for(let{sessionId:Z,sessionMessages:G,summaries:F,checkpoints:Y}of I){if(!Z)continue;for(let[W,J]of G.entries())this.messages.set(W,J);for(let[W,J]of F.entries())this.summaries.set(W,J);this.checkpoints.set(Z,Array.from(Y.values()))}return this.didLoad=!0,this})}async function oF1(A){let B=Fw0(A);return await wq().insertMessageChain(B),B[B.length-1]?.uuid||null}async function tF1(A){await wq().insertMessageChain(Fw0(A),!0)}async function bu1(A){await wq().insertCheckpoint(A)}async function Qw0(){let A=wq();A.sessionFile=sF1()}function O9Q(A){let B=A.find((I)=>I.type==="user");if(!B||B.type!=="user")return"No prompt";let Q=B.message?.content,D="";if(typeof Q==="string")D=Q;else if(Array.isArray(Q))D=Q.find((Z)=>Z.type==="text")?.text||"No prompt";else D="No prompt";if(D=D.replace(/\n/g," ").trim(),D.length>45)D=D.slice(0,45)+"...";return D}function T9Q(A){return A.map((B)=>{let{isSidechain:Q,parentUuid:D,...I}=B;return I})}function Dw0(A,B=0,Q,D){let I=A[A.length-1],Z=A[0],G=O9Q(A),F=new Date(Z.timestamp),Y=new Date(I.timestamp),W=D?.map((J)=>({commit:J.commit,timestamp:new Date(J.timestamp),label:J.label}));return{date:I.timestamp,messages:T9Q(A),fullPath:"n/a",value:B,created:F,modified:Y,firstPrompt:G,messageCount:A.length,isSidechain:Z.isSidechain,leafUuid:I.uuid,summary:Q,checkpoints:W}}async function Iw0(){let A=await wq().getAllTranscripts(),B=wq().summaries;return A.map((Q,D)=>{let I=Q[Q.length-1],Z=I?B.get(I.uuid):void 0,G=I?wq().getAllCheckpoints(Q):void 0;return Dw0(Q,D,Z,G)}).sort((Q,D)=>{return D.modified.getTime()-Q.modified.getTime()})}async function Zw0(A,B){await wq().appendEntry({type:"summary",summary:B,leafUuid:A})}async function gu1(A){let B=new Map,Q=new Map,D=new Map;try{let I=await zy1(A);for(let Z of I)if(Z.type==="user"||Z.type==="assistant"||Z.type==="attachment"||Z.type==="system")B.set(Z.uuid,Z);else if(Z.type==="summary"&&Z.leafUuid)Q.set(Z.leafUuid,Z.summary);else if(Z.type==="checkpoint")D.set(Z.commit,Z)}catch{}return{messages:B,summaries:Q,checkpoints:D}}async function hu1(A){let B=Ko(rF1(dA()),`${A}.jsonl`);return gu1(B)}var P9Q=L0(async(A)=>{let{messages:B,checkpoints:Q}=await hu1(A);return{messageSet:new Set(B.keys()),checkpointSet:new Set(Q.keys())}},(A)=>A);async function Gw0(A){let B=await wq().getLastLog(A);if(B!==null&&B!==void 0){let Q=B[B.length-1],{summaries:D,checkpoints:I}=await hu1(A),Z=Q?D.get(Q.uuid):void 0;return Dw0(B,0,Z,Array.from(I.values()))}return null}function Fw0(A){return A.filter((B)=>{if(B.type==="progress")return!1;if(B.type==="attachment"&&Aw0()!=="ant")return!1;return!0})}var eF1=[],_9Q=100;function j9Q(A){return A.toISOString().replace(/[:.]/g,"-")}var du1=j9Q(new Date);function y9Q(){return mu1(Kz.errors(),du1+".txt")}var uu1=!1;function b1(A){if(uu1)return;uu1=!0;try{if(process.env.CLAUDE_CODE_USE_BEDROCK||process.env.CLAUDE_CODE_USE_VERTEX||process.env.DISABLE_ERROR_REPORTING||process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC)return;if(x4(!1))console.error(A);let B=A.stack||A.message,Q={error:B,timestamp:new Date().toISOString()};if(eF1.length>=_9Q)eF1.shift();eF1.push(Q),k9Q(y9Q(),{error:B})}catch{}finally{uu1=!1}aF1(A)}function Yw0(){return[...eF1]}function cu1(A){if(!v1().existsSync(A))return[];try{return JSON.parse(v1().readFileSync(A,{encoding:"utf8"}))}catch{return[]}}function k9Q(A,B){return}async function Ku(){let A=await Iw0();return x9Q(A.filter((B)=>B.messages.length)).map((B,Q)=>({...B,value:Q}))}async function Ww0(A){return await Gw0(A)}async function Jw0(A){return(await Ku())[A]||null}function x9Q(A){return A.sort((B,Q)=>{let D=Q.modified.getTime()-B.modified.getTime();if(D!==0)return D;let I=Q.created.getTime()-B.created.getTime();if(I!==0)return I;return B.created.getTime()-Q.created.getTime()})}function RD(A,B){if(A9(JA.red(`MCP server "${A}" ${B}`)),(xQ()||{}).cleanupPeriodDays===0)return;try{let D=Kz.mcpLogs(A),I=B instanceof Error?B.stack||B.message:String(B),Z=new Date().toISOString(),G=mu1(D,du1+".txt");if(!v1().existsSync(D))v1().mkdirSync(D);if(!v1().existsSync(G))v1().writeFileSync(G,"[]",{encoding:"utf8",flush:!1});let F={error:I,timestamp:Z,sessionId:yB(),cwd:v1().cwd()},Y=cu1(G);Y.push(F),v1().writeFileSync(G,JSON.stringify(Y,null,2),{encoding:"utf8",flush:!1})}catch{}}function P2(A,B){cA(`MCP server "${A}": ${B}`);try{let Q=Kz.mcpLogs(A),D=new Date().toISOString(),I=mu1(Q,du1+".txt");if(!v1().existsSync(Q))v1().mkdirSync(Q);if(!v1().existsSync(I))v1().writeFileSync(I,"[]",{encoding:"utf8",flush:!1});let Z={debug:B,timestamp:D,sessionId:yB(),cwd:v1().cwd()},G=cu1(I);G.push(Z),v1().writeFileSync(I,JSON.stringify(G,null,2),{encoding:"utf8",flush:!1})}catch{}}import*as IY1 from"node:os";import{createHash as i9Q}from"node:crypto";import{PassThrough as v9Q}from"stream";function Nq(A){if(A<60000){let I=(A/1000).toFixed(1);return`${I.endsWith(".0")?I.slice(0,-2):I}s`}let B=Math.floor(A/3600000),Q=Math.floor(A%3600000/60000),D=(A%60000/1000).toFixed(1);if(B>0)return`${B}h ${Q}m ${D}s`;if(Q>0)return`${Q}m ${D}s`;return`${D}s`}function n7(A){let B=A>=1000;return new Intl.NumberFormat("en",{notation:"compact",minimumFractionDigits:B?1:0,maximumFractionDigits:1}).format(A).toLowerCase()}function Cw0(A,B={}){let{style:Q="narrow",numeric:D="always",now:I=new Date}=B,Z=A.getTime()-I.getTime(),G=Math.trunc(Z/1000),F=[{unit:"year",seconds:31536000,shortUnit:"y"},{unit:"month",seconds:2592000,shortUnit:"mo"},{unit:"week",seconds:604800,shortUnit:"w"},{unit:"day",seconds:86400,shortUnit:"d"},{unit:"hour",seconds:3600,shortUnit:"h"},{unit:"minute",seconds:60,shortUnit:"m"},{unit:"second",seconds:1,shortUnit:"s"}];for(let{unit:W,seconds:J,shortUnit:C}of F)if(Math.abs(G)>=J){let X=Math.trunc(G/J);if(Q==="narrow"&&J<86400)return G<0?`${Math.abs(X)}${C} ago`:`in ${X}${C}`;return new Intl.RelativeTimeFormat("en",{style:"long",numeric:D}).format(X,W)}if(Q==="narrow")return G<=0?"0s ago":"in 0s";return new Intl.RelativeTimeFormat("en",{style:Q,numeric:D}).format(0,"second")}function AY1(A,B={}){let{now:Q=new Date,...D}=B;if(A>Q)return Cw0(A,{...D,now:Q});return Cw0(A,{...D,numeric:"always",now:Q})}function Eu(A,B=!1){if(!A)return;let Q=new Date(A*1000),D=new Date;if((Q.getTime()-D.getTime())/3600000>24){let W=Q.toLocaleDateString("en-US",{weekday:"short"}),J=Intl.DateTimeFormat().resolvedOptions().timeZone;return{resetTimeDisplay:"on "+W+(B?` (${J})`:""),isWeeklyLimit:!0}}let G=Q.getMinutes(),F=Q.toLocaleTimeString("en-US",{hour:"numeric",minute:G===0?void 0:"2-digit",hour12:!0}),Y=Intl.DateTimeFormat().resolvedOptions().timeZone;return{resetTimeDisplay:"at "+F.replace(/ ([AP]M)/i,(W,J)=>J.toLowerCase())+(B?` (${Y})`:""),isWeeklyLimit:!1}}var qw0=G1(zw0(),1);class lu1{capacity;buffer;head=0;size=0;constructor(A){this.capacity=A;this.buffer=new Array(A)}add(A){if(this.buffer[this.head]=A,this.head=(this.head+1)%this.capacity,this.size<this.capacity)this.size++}addAll(A){for(let B of A)this.add(B)}getRecent(A){let B=[],Q=this.size<this.capacity?0:this.head,D=Math.min(A,this.size);for(let I=0;I<D;I++){let Z=(Q+this.size-D+I)%this.capacity;B.push(this.buffer[Z])}return B}toArray(){if(this.size===0)return[];let A=[],B=this.size<this.capacity?0:this.head;for(let Q=0;Q<this.size;Q++){let D=(B+Q)%this.capacity;A.push(this.buffer[D])}return A}clear(){this.head=0,this.size=0}length(){return this.size}}var Uw0=137,ww0=143;function Nw0(A){let B=null,Q="";A.on("data",(I)=>{if(B)B.write(I);else Q+=I});let D=()=>Q;return{get:D,asStream(){return B=new v9Q({highWaterMark:10485760}),B.write(D()),Q="",B}}}function $w0(A,B,Q,D){let I="running",Z,G=Nw0(A.stdout),F=Nw0(A.stderr);if(D){let X=new lu1(10),V=0,K=(E)=>{let q=E.toString().split(`
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

RangeError: Invalid string length
    at Socket.<anonymous> (file:///home/ubuntu/.nvm/versions/node/v22.17.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:627:8993)
    at Socket.emit (node:events:530:35)
    at Socket.emit (node:domain:489:12)
    at addChunk (node:internal/streams/readable:561:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
    at Readable.push (node:internal/streams/readable:392:5)
    at Pipe.onStreamRead (node:internal/stream_base_commons:189:23)

Node.js v22.17.0

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗