{"version":"2.1.305","anchor":"team-memory-sync-backs-off-when-the-server-asks","canonical_anchor":"team-memory-sync-backs-off-when-the-server-asks","heading":"Memory sync and uploads now wait when the server asks them to","tier":"notice","area":"Memory","scope":"both","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.305\/e\/team-memory-sync-backs-off-when-the-server-asks","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.305","markdown":"### Memory sync and uploads now wait when the server asks them to\n\nTeam memory sync and some uploads now honor the server's retry-after signal, skip work while it lasts, and retry once the wait is over\n\n**What**\n\nTeam 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.\n\n- Recording the wait: a new helper stores `serverBackoffUntilMs` from an error's `retryAfterMs`, and the retry-after value is carried on 429 and 503 responses.\n\n- 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.\n\n- 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 `downloadsDeferred` is recorded. A successful download resets `downloadsDeferred`.\n\n- List requests: a list request that fails with a retry-after now reports `backed_off` instead of `unavailable`, and the error is passed on even if nothing was pulled.\n\n- Retrying: the watcher schedules a `backoff_retry` sync when the wait ends, using exponential backoff (`backoffRetryAtMs`), even when periodic resync is disabled (interval of 0 or less). `backoffRetryAtMs` is cleared when a push starts.\n\n- Results: pull and push results gain `backedOff`, a `skipped` result is added, and the sync reports pulls and pushes as `backed_off` rather than failed, with a `stores_backed_off` count.\n\n- Batch uploader: a new `cutsNextBackoff` flag is reset when a drain finishes.\n\nSeparately, a tool-use summary adds a `memorySave` field when `isMemorySaveCall` matches.\n\n**Why**\n\nBefore, 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.\n\n- Area: Memory\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 2\/5\n- Scope: both\n- Heads-up: no"}