What
Team memory is notes Claude Code keeps and shares through a server. When the server is busy it can reply with a "retry after" signal asking the client to wait. Claude Code now respects that signal instead of treating it as a plain failure.
- Recording the wait: a new helper stores
serverBackoffUntilMsfrom an error'sretryAfterMs, and the retry-after value is carried on 429 and 503 responses. - Skipping work: while the wait is in effect, queued uploads and deletes are skipped for that cycle with a warning, and a store logs "sitting this cycle out: the server asked sync to wait". Stores still waiting, or flagged by the pull, are skipped on push.
- Downloads: when a download hits the signal, the rest of that pull is not started ("not started after the server asked sync to wait"), and
downloadsDeferredis recorded. A successful download resetsdownloadsDeferred. - List requests: a list request that fails with a retry-after now reports
backed_offinstead ofunavailable, and the error is passed on even if nothing was pulled. - Retrying: the watcher schedules a
backoff_retrysync when the wait ends, using exponential backoff (backoffRetryAtMs), even when periodic resync is disabled (interval of 0 or less).backoffRetryAtMsis cleared when a push starts. - Results: pull and push results gain
backedOff, askippedresult is added, and the sync reports pulls and pushes asbacked_offrather than failed, with astores_backed_offcount. - Batch uploader: a new
cutsNextBackoffflag is reset when a drain finishes.
Separately, a tool-use summary adds a memorySave field when isMemorySaveCall matches.
Why
Before, these cases counted as ordinary pull or push failures and a stale store was only resynced on the regular interval. Now sync backs off when the server is under load and catches up on its own once the wait is over.