How Public Firebase API Keys Can Enable Unauthorized Gemini Billing (And the Support Catch-22)

I am posting this to the community because this issue represents a systemic vulnerability affecting the Firebase, Google Cloud, and Gemini developer ecosystems. Google needs to address this structurally before it severely damages developer trust.

The Issue: Public Keys with Overly Broad API Access

Our Google Cloud project was recently suspended after activity was flagged as “consistent with hijacking.” At the same time, our billing account was hit with unexpected charges for Gemini / Generative Language API usage that we did not authorize or benefit from.

The apparent culprit appears to be an auto-generated Google API key associated with our Firebase client-side configuration.

Here is why this is a critical platform-level problem:

1. The public nature of Firebase keys

Firebase API keys are historically documented and treated as public-facing identifiers. They are intentionally embedded in client-side apps.

2. The overly broad API access risk

Firebase browser keys are public/client-side keys. If their API restrictions are missing, too broad, or include Gemini / Generative Language APIs, they can become usable for paid AI calls.

3. The exploitation risk

If a developer enables Gemini within their project but forgets to retroactively apply strict API restrictions to existing public Firebase keys, anyone can extract that public key from the client app and potentially execute high-cost Generative AI requests on the developer’s dime.

The Support Catch-22: Remediation vs. Suspension

The frustration of the financial hit is compounded by an operational gridlock in Google’s security workflow:

  1. Google flags the project as compromised due to API key abuse.

  2. Google completely suspends project access.

  3. Google leaves the developer with the bill, but blocks console access, making it impossible to audit logs, rotate credentials, delete compromised keys, or properly remediate the issue.

This creates an unsustainable loop where developers are punished for a security incident, then locked out of the tools required to fix it while waiting days for an asynchronous Account and Security review.

Actionable Recommendations for Google

We are not looking to evade developer responsibility. We agree that developers must set budgets, monitor usage, and restrict keys. However, when a platform optimizes for rapid deployment and integrates high-cost AI services, the safe path must be the default path.

We urge the Google Cloud and Firebase product teams to implement the following changes:

1. Product and Architecture Defaults

Automatic AI API isolation

Automatically exclude high-cost APIs like Generative Language / Gemini from public browser, Android, iOS, or Firebase-generated keys unless explicitly enabled.

Proactive scanning

Flag projects where a public-facing key has unrestricted access to billable AI APIs and trigger a dashboard warning.

2. Policy and Support Workflow

Sandbox remediation access

Provide a restricted, read/write administrative access state for suspended projects, allowing developers to rotate or delete keys without re-enabling malicious traffic.

Fast-track abuse remediation

Create an expedited support path specifically for AI billing and API key abuse, separate from standard billing disputes.

Automatic billing review

Provide billing adjustments or credits when Google’s own automated systems flag the traffic as compromised or hijacked.

Overall, Google has spent over a decade building incredible goodwill through Firebase and the Google Cloud ecosystem. Gemini is a powerful tool, but if developers begin to associate building with Gemini with catastrophic financial risks and sudden project lockouts, adoption will suffer.

Google needs to address this proactively with clearer defaults, guardrails for legacy keys, and a fairer remediation process.

Note to Google Staff: Project ID is available privately upon request

They actually did exist then are you referring to 2021 billing i had my billing set up but everytime a card number changed it did not update to my new card which I expected it to do but since it’s not connecting properlly to my account in the first place it’d really hard to understand why I have to keep paying and nothing gets payed back to me when I know my apps and busdiness have made money