Why it happened: Two platform behaviors combined. First, debug tokens are scoped to a single app, so a token registered for the web or Android app does not authorize the iOS app, which has its own App ID. Second, the Xcode run scheme passed the token through an environment placeholder. When that placeholder was not expanded, the literal placeholder text was sent instead of a UUID. The Firebase SDK saw a non-empty value, skipped generating its own token, and Google rejected the placeholder.