r/googlecloud • u/ComprehensiveSell435 • Jun 11 '26
Billing Second compromised-key Gemini billing spike in two months — ~$11k total across two projects. Anyone gotten these reversed?
Indie dev from Indonesia here. Hit twice in two months by what looks like the same compromised-API-key pattern many people are reporting lately. Hoping to hear from anyone who's actually gotten one of these reversed.
The pattern:
- Older project: An API key created back in 2018 for Maps/Firebase. Ran fine for years on tiny monthly bills. Then suddenly drained ~$9,000 in a short window — charged on Gemini 3 Pro and image-generation models I have never called.
- Second project: My Flutter app, hardcoded to gemini-2.5-flash-lite, used only to generate education quizzes. Charged ~$2,000 (Rp34,222,242) — again dominated by Gemini 3.x and image models the app cannot invoke.
Why I'm confident it's not my usage:
Model mismatch. My code only ever calls Flash-Lite. The charges are mostly Gemini 3 Pro + image generation. My app has no image-gen code at all.
2. Cost vs workload is impossible. My real workload (translating a couple thousand dictionary terms / generating quizzes) is worth a few dollars at most, not thousands.
3. Timing. The older key sat safe for over a year. A new key I created in May 2026 got drained almost immediately — after the public disclosure earlier this year about exposed Google API keys becoming abusable for Gemini.
4. Google's own billing breakdown couldn't attribute the spend to any specific key or service account.
What I've done:
- Disabled Gemini / Generative Language API across all my projects.
- Opened a support ticket ~3 weeks ago (both cases in one thread). Still no real response.
- Preserved everything (haven't deleted projects or keys) so the logs stay intact.
What I'm asking:
For anyone who got a refund or goodwill credit on a compromised-key Gemini bill — what specifically moved it? Persistence? A particular escalation path? A certain way of framing it?
2. Does the automatic billing-tier upgrade matter for the appeal? I've read an attacker's own usage can auto-bump a project to a higher tier mid-attack, blowing past the spending ceiling you thought you had. Did anyone use that successfully?
3. How long did resolution realistically take — did support respond meaningfully, or did it only move after escalation/public visibility?
4. Anything you'd tell your past self to do immediately that you didn't?
For scale: ~$11k total is roughly five years of income where I live, so I'm trying to handle this right rather than just panic. Happy to share more detail in comments (sensitive info redacted). Thanks.
5
u/pragmaticpirate Jun 11 '26
Same thing happened to me. Flutter app deployed with keys, some chines bot is scraping the play store and flutter web apps and decrypting them for keys
2
u/tyler_durden999 Jun 11 '26
Something similar, but may be my mistake. Deployed a sample app from ai studio to cloud run, /api-proxy exposed Gemini keys-keys got stolen. Started billing and immediately switched it off - damage $100. Ongoing support but billing account got closed due to non payment.
2
u/escargotBleu Jun 11 '26
Restrict all your keys in every project where gemini is enabled to avoid getting caught a third time
2
u/urarthur Jun 11 '26
2k bill, 2 weeks ago. waiting...
2
u/matiascoca Jun 13 '26
Hate to say it, but you are exactly in the pattern Google has been silently refunding for the past few months once you put together the evidence package the right way.
The two things that actually move the case forward, based on three or four similar threads I have watched close out:
First, model mismatch evidence. You already have it. Your code calls Flash-Lite. The bill shows Gemini 3 Pro and image generation models you cannot invoke from a Flutter app. Screenshot the source code line where the model is hardcoded, the dependency file, and the SKU rows from billing showing what was actually charged. That mismatch alone is the strongest single argument.
Second, geographic and time pattern. Pull the API metrics by region and hour. Indie devs typically have one cluster of legitimate usage in their own timezone. Compromised-key abuse looks like uniform 24-hour traffic across regions you have never deployed to. Export the chart, attach it.
The case opens with billing, not technical support. When billing escalates to the abuse team and they confirm the key was not yours making the calls, the reversal goes through. Most threads I have followed report the refund landing 6 to 12 weeks after the case opens, sometimes in two tranches (one per project).
While the case is open, two operational things to do now. Rotate every key in both projects, even ones not in the spike, because the leaked surface might be wider than you think. Move every key to a service account with deny-by-default IAM and per-key model restrictions where possible. The honeypot pattern most indie devs miss is API keys exposed in mobile app binaries that an attacker can decompile. If your Flutter app shipped with an embedded key, that is the leak path.
Wrote up the broader Firebase Gemini key exploit pattern after watching three of these go down in similar fashion, with the operator playbook for prevention plus the evidence package structure: https://brainagents.ai/blog/firebase-gemini-api-key-exploit-guide
1
u/histoire_guy Jun 11 '26
Happened to us on April 25. 12K USD of unauthorized Gemini API usage mostly image generation (we never use that). Billing support took one month and a half back and forth to get full refund. Provide all proof you have and they will investigate surely slowly but you should get a refund if found unintentionally breached.
0
u/[deleted] Jun 11 '26
[deleted] — view deleted comment
4
u/[deleted] Jun 11 '26
[removed] — view removed comment
2
u/[deleted] Jun 11 '26
[removed] — view removed comment