{"version":"2.1.246","anchor":"off-by-default-refresh-of-startup-data-when-the-server-says-","canonical_anchor":"off-by-default-refresh-of-startup-data-when-the-server-says-","heading":"Off-by-default refresh of startup data when the server says it is stale","tier":"soon","area":"Elsewhere","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.246\/e\/off-by-default-refresh-of-startup-data-when-the-server-says-","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.246","markdown":"### Off-by-default refresh of startup data when the server says it is stale\n\nClaude can refetch startup config when the server says it is stale, but the gate is off.\n\n**What**\n\nNew code compares a version marker the server returns on each API response against the one attached to the cached startup configuration, and if they differ it schedules a delayed refetch. It is gated on `tengu_expressive_whistle`, whose built-in fallback is off, so with no remote configuration nobody sees this.\n\n**Details**\n\n- The marker arrives in an `x-cc-atis-current` response header; the caller in the API path already passes response headers in, so the feature is fully wired.\n- Outcomes are reported through the new `tengu_client_data_stale_refetch` event as `skipped_converged`, `fetch_failed`, `fetched_converged` or `fetched_pins_differ`.\n- A second guard requires an internal eligibility check that lives in a chunk not shipped in this bundle.\n- Refetches wait at least 300,000ms plus up to 180,000ms of random jitter.\n\n**Evidence**\n\n`[Bootstrap] Server ATIS pin differs from cached clientData; refetching`\n\n- Flag `tengu_expressive_whistle`: Not enough to say (read for one account on one subscription tier against v2.1.246; this account: no value returned, anonymous baseline: no value returned, compiled default: off)\n- Area: Elsewhere\n- Tier: Nothing to try yet\n- Useful: 1\/5\n- Signal: 0\/5\n- Present in the build but not switched on"}