A Chrome extension that removes the "Content Blocked" warning in Google AI Studio. The model's generated text stays visible instead of being replaced with an error banner.
AI Studio uses an internal numeric finishReason code in its XHR responses:
1= STOP (normal end)8= Content Policy violation → triggers "Content Blocked"
The extension intercepts the response stream before Angular processes it and does three things:
| # | Action | Effect |
|---|---|---|
| 1 | [],8 → [],1 |
finishReason replaced with STOP |
| 2 | xhr.abort() → no-op |
stream isn't killed mid-response |
| 3 | "SAFETY" → "STOP" |
string enum fallback for public API format |
No DOM manipulation. No flicker. The block never appears.
The server physically stops generating tokens when Content Policy triggers. The extension can't make the server generate more text — that's a hard server-side constraint.
Workaround: type continue in the chat to get the next chunk. Repeat until you have the full response.
No Chrome Web Store — load as an unpacked extension.
- Download ZIP and extract, or clone the repo
- Open Chrome → go to
chrome://extensionsoredge://extensions - Enable Developer Mode (top right toggle)
- Click Load unpacked → select the extracted folder
- Open aistudio.google.com — extension is active
├── manifest.json — Extension config (Manifest V3)
├── interceptor.js — XHR patch, runs in MAIN world before Angular loads
├── content.js — Toggle state sync (ISOLATED world)
├── popup.html — Extension popup UI
├── popup.css — Popup styles
├── popup.js — Popup toggle logic
└── icons/ — Extension icons (16, 48, 128px)
| Version | What changed |
|---|---|
| v3.0 | Full rewrite — XHR response interception replaces DOM-based approach. Proactive, zero flicker. |
| v1.x | DOM Capture & Restore — MutationObserver detected block, clicked Edit → paste → Save |
- Works only on
aistudio.google.com - No data collection, no external requests
- Free & open source