Status: BLOCKED-ENV — Day 7 consecutive credential failure.
Customer: 3813916687 | MCC: 8676599345 | Campaign: SAIL - Car Accidents 2026 (23723841732)
Data source: Direct Google Ads API v30 (adspirer not used).
google-ads/outputs/fix-lists/neg-candidates-2026-05-01.mdgoogle-ads/outputs/qa-queue-mirror/2026-05-01.mdgoogle-ads/handoffs/gads-search-term-review-2026-05-01.mdThe OAuth refresh token in google-ads.yaml returned invalid_grant: Token has been expired or revoked for the seventh consecutive day. The yaml file mtime is unchanged from 2026-04-24 20:00:55 UTC. vault.env does not exist. Today is the 7-day calendar mark from the yaml mtime, which lines up with Google's Testing-tier OAuth refresh-token expiry.
No GAQL queries executed. No negatives applied. No mutations.
sail-automation Google account with service-account creds in a cloud secret manager.sail-ads-runner cloud image; Mac becomes fallback only.~/Documents/Codex/_qa-queue/ on the next interactive Cowork session.Sam rotates the OAuth refresh token in a browser, updates google-ads.yaml, mirrors into vault.env, and (ideally) publishes the OAuth client to Production to stop the 7-day expiry cycle. Next run will auto-widen to LAST_49_DAYS to backfill 2026-04-25 through 2026-05-01.
runner: cowork scheduled-task sandbox
date_local: 2026-05-01
adspirer not used
google-ads SDK: 30.1.0
api_versions_attempted: v20, v21
mcc_override: 8676599345 (in code, not yaml)
auth_result: invalid_grant (Day 7)
yaml_mtime_unchanged_since: 2026-04-24 20:00:55 UTC
gaql_queries_executed: 0
mutations_attempted: 0
auto_apply: 0
notion_push: this entry
qa_queue_mirror: outputs/qa-queue-mirror/2026-05-01.md (in-repo)