If AdLoop suddenly stopped working with an error like one of these, you're in the right place:
deleted_client: The OAuth client was deleted.
invalid_client: The OAuth client was not found.
RefreshError: ('deleted_client: The OAuth client was deleted.', ...)
What happened
AdLoop versions ≤0.9 shipped with built-in OAuth credentials backed by a shared Google Cloud project. That project hit Google's lifetime 100-user cap for unverified apps long ago and was retired in v0.10 (new installs stopped using it in June). The project has now been shut down, which immediately invalidates every sign-in that was ever created through it — that's the error you're seeing. Your data and your Google account are completely unaffected; only AdLoop's stored token stopped working.
Fix — pick one
Option A: AdLoop Cloud (fastest — ~2 minutes)
getadloop.com is the hosted version: connect your Google account in two clicks. No Google Cloud project, no developer token, no OAuth setup — and it works from claude.ai, ChatGPT, Claude Code, Cursor, and Gemini. Free during beta, EU-hosted, GDPR-first. All 61 tools, same safety model.
Option B: Stay self-hosted with your own Google project (~5 minutes, free)
pip install -U adloop # 0.11+ — bundled credentials are gone, you'll get proper error messages
adloop init # wizard walks you through creating your own Google Cloud project
Your own project has no shared user cap and no dependence on anyone else's infrastructure — this exact breakage can never happen to you again. The wizard covers everything including the consent screen.
Afterwards, delete the stale token so the new credentials take over cleanly:
Why the shared credentials had to go
Google caps unverified OAuth apps at 100 lifetime users, and full verification requires a review process that doesn't fit an MIT-licensed tool where every user is better served by owning their credentials. v0.10 made bring-your-own-project the only self-hosted path, and AdLoop Cloud exists for everyone who'd rather never open the Google Cloud console. Sorry for the abrupt breakage if this caught you mid-campaign — Option A gets you back in two minutes.
Pinned for searchability. If your error isn't one of the above, open a separate issue.
If AdLoop suddenly stopped working with an error like one of these, you're in the right place:
What happened
AdLoop versions ≤0.9 shipped with built-in OAuth credentials backed by a shared Google Cloud project. That project hit Google's lifetime 100-user cap for unverified apps long ago and was retired in v0.10 (new installs stopped using it in June). The project has now been shut down, which immediately invalidates every sign-in that was ever created through it — that's the error you're seeing. Your data and your Google account are completely unaffected; only AdLoop's stored token stopped working.
Fix — pick one
Option A: AdLoop Cloud (fastest — ~2 minutes)
getadloop.com is the hosted version: connect your Google account in two clicks. No Google Cloud project, no developer token, no OAuth setup — and it works from claude.ai, ChatGPT, Claude Code, Cursor, and Gemini. Free during beta, EU-hosted, GDPR-first. All 61 tools, same safety model.
Option B: Stay self-hosted with your own Google project (~5 minutes, free)
Your own project has no shared user cap and no dependence on anyone else's infrastructure — this exact breakage can never happen to you again. The wizard covers everything including the consent screen.
Afterwards, delete the stale token so the new credentials take over cleanly:
rm ~/.adloop/token.jsonWhy the shared credentials had to go
Google caps unverified OAuth apps at 100 lifetime users, and full verification requires a review process that doesn't fit an MIT-licensed tool where every user is better served by owning their credentials. v0.10 made bring-your-own-project the only self-hosted path, and AdLoop Cloud exists for everyone who'd rather never open the Google Cloud console. Sorry for the abrupt breakage if this caught you mid-campaign — Option A gets you back in two minutes.
Pinned for searchability. If your error isn't one of the above, open a separate issue.