Follow Discord
Sweep 08 Oct 2026 · 18:53Z Build v2.1.295 516 read Stable v2.1.286 Latest v2.1.295 Next v2.1.295 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.293 ·

File-staging failures that cannot succeed are marked permanent

File staging in cloud sessions now marks unrecoverable failures as permanent so they are not retried, fixes the gated-list error text and notes overwrites

Group of 2 You'll notice Bug Fixes
JSON All of v2.1.293
You'll noticeTier: how much it should matter to you
1Useful: my rating, 1 to 5
1Signal: worth watching, 1 to 5
InternalsArea: what it touches
Bug FixesKind: in v2.1.293,
Bug FixesSection of the release

What

Staging is how files are copied into a session, for example in cloud sessions. Failures that will never succeed on a retry are now tagged permanent: true, where before they only reported failure and an error message.

  • HTTP 4xx errors are permanent, except 408 (timeout) and 429 (too many requests).
  • These file-system errors are permanent: ENAMETOOLONG, ENOSPC, EDQUOT, EFBIG, EISDIR, ENOTDIR, EINVAL, ELOOP, ENOTEMPTY, and STAGE_PARENT_ESCAPE (a file trying to land outside its allowed folder).
  • Fetches blocked by a gate are permanent. The "list gated" error used to print the wrong value as its reason; it now shows the real reason (list gated: ${r.reason}).
  • The record of a completed staging gains a replaced field, and overwriting a file with different contents is logged as a warning.

Why

Callers can stop retrying uploads that cannot work, such as a full disk or a name that is too long, instead of looping. A gated list now explains itself with a readable reason.

See this entry in the whole of v2.1.293 →

Feedback