[BUG] Claude Code crashed with ENOENT ECOMPROMISED (lock file)

Resolved 💬 2 comments Opened Jul 18, 2025 by ChristophRauch Closed Jul 26, 2025

Environment

  • Platform (select one):
  • [x] Anthropic API
  • Claude CLI version: 1.0.55 (Claude Code)
  • Operating System: Fedora 42
  • Terminal: /usr/libexec/gnome-terminal-server

Bug Description

I didn't look at Claude Code while it was doing it's thing and when I switched workspaces back, it seemed to have crashed (didn't see it happen, though) and this was printed on the screen:

file:///home/christoph/.claude/local/node_modules/@anthropic-ai/claude-code/cli.js:168
GFS4: ),console.error(A)};if(!E5[LG]){if(Xv1=global[LG]||[],$oA(E5,Xv1),E5.close=function(A){function B(Q,I){return _[... literally hundreds of lines of minified code omitted (was that important?)...]_
Date,expiresIn:D=3600,unsignableHeaders:G,unhoistableHeaders:Z,signableHeaders:F,signingRegion:Y,signingService:W}=Q,J=await this.credentialProvider();this.validateResolvedCredentials(J);let C=Y??await this.regionProvider(),{longDate:X,shortDate:V}=BG1(I);if(D>bL9)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");let K=IG1(V,C,W??this.service),H=C10(dv1(B),{unhoistableHeaders:Z});if(J.sessionToken)H.query[Q10]=J.sessionToken;H.query[LL9]=gv1,H.query[ML9]=${J.accessKeyId}/${K},H.query[A10]=X,H.query[OL9]=D.toString(10);let z=uv1(H,G,F);return H.query[RL9]=teA(z),H.query[B10]=await this.getSignature(X,K,this.getSigningKey(J,C,V,W),this.createCanonicalRequest(H,z,await DG1(B,this.sha256))),H}async sign(B,Q){if(typeof B==="string")return this.signString(B,Q);else if(B.headers&&B.payload)return this.signEvent(B,Q);else if(B.message)return this.signMessage(B,Q);else return this.signRequest(B,Q)}async signEvent({headers:B,payload:Q},{signingDate:I=new Date,priorSignature:D,signingRegion:G,signingService:Z}){let F=G??await this.regionProvider(),{shortDate:Y,longDate:W}=BG1(I),J=IG1(Y,F,Z??this.service),C=await DG1({headers:{},body:Q},this.sha256),X=new this.sha256;X.update(B);let V=mR.toHex(await X.digest()),K=[fL9,W,J,D,V,C].join(

[Error: ENOENT: no such file or directory, stat '/home/christoph/.claude/shell-snapshots/snapshot-bash-1752680657478-vkuhez.sh.lock'] {
errno: -2,
code: 'ECOMPROMISED',
syscall: 'stat',
path: '/home/christoph/.claude/shell-snapshots/snapshot-bash-1752680657478-vkuhez.sh.lock'
}

Node.js v22.17.0

Steps to Reproduce

No clue. Only happened once.

Expected Behavior

No crash.

Actual Behavior

Crash.

Additional Context

Claude was just done with its summary and the prompt should have been active again. Perhaps this is the moment the bug triggered.

View original on GitHub ↗

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