import InfoBox from '../components/InfoBox.astro';

The devcontainer updates its developer CLIs automatically on startup. To prevent a just-published, potentially compromised release from being installed immediately, the auto-updater now enforces a minimum release age. A tool must be public for at least three days before the devcontainer will install it.

Every tool block in the manifest now requires a `minimumReleaseAgeDays` value. When a newer version is known to exist, the gate walks backward through the release history to find the newest release that clears the bar. For Claude Code, Codex CLI, and pnpm, this works well. They are npm-installable, so the script bypasses their own updaters and uses a version-pinned `npm install` for the fallback candidate.

<InfoBox variant="note">
The gate fails safe. If a release's age cannot be confirmed because a lookup errors or its source is unparseable, the update is held. Absence of proof of age is treated as insufficient age.
</InfoBox>

Antigravity is the exception to the fallback mechanism. It has no npm-style version pinning and no verified download URL for anything but its current latest version. It can only ever update to that latest version if it clears the age bar, or hold. It cannot fall back to an intermediate version. This is a permanent limitation of its distribution channel, not a gap to close later.

The startup log now distinguishes a policy-driven wait from a data problem with three distinct `HELD` statuses: a too-young target, no eligible release in the window, or an unconfirmed release age. With the gate in place, the devcontainer's runtime update path is secure against supply-chain attacks that rely on immediate installation.