GEMINI LABJP
LYRIA — Lyria 3.5 entered public preview on September 3. It generates full-length songs rather than loops, with fine-grained control over duration and structureINPUT — The model ID is lyria-3.5, and it accepts images alongside text. Being able to say make it feel like this photo changes how you approach the promptSPEC — Output is 44.1kHz stereo, the input ceiling is 131,072 tokens, and it can write lyrics. Worth carrying those units whenever you quote the numbersVIDEO — The agentic video understanding released September 1 lets the model walk a timeline itself, pulling transcripts or frames on demand. Up to 88% fewer tokens on long contentQUIET — Nothing new has landed in the API release notes since September 3. A quiet stretch is still worth recording rather than passing over in silenceDICTATION — On the app side, holding the Fn key now dictates into your active window, dropping cleaned-up text straight at the cursorLYRIA — Lyria 3.5 entered public preview on September 3. It generates full-length songs rather than loops, with fine-grained control over duration and structureINPUT — The model ID is lyria-3.5, and it accepts images alongside text. Being able to say make it feel like this photo changes how you approach the promptSPEC — Output is 44.1kHz stereo, the input ceiling is 131,072 tokens, and it can write lyrics. Worth carrying those units whenever you quote the numbersVIDEO — The agentic video understanding released September 1 lets the model walk a timeline itself, pulling transcripts or frames on demand. Up to 88% fewer tokens on long contentQUIET — Nothing new has landed in the API release notes since September 3. A quiet stretch is still worth recording rather than passing over in silenceDICTATION — On the app side, holding the Fn key now dictates into your active window, dropping cleaned-up text straight at the cursor
Articles/Advanced
Advanced/2026-07-26Advanced

Wiring a Security-Focused Model Into a Solo Developer's Audit — The Extraction Layer and Fingerprints That Stop Re-Reporting

A three-layer design that extracts outbound-request sinks with the AST, then accepts a model's hypothesis only when the reproduction actually runs. Four fingerprint schemes measured, including the collision that hides a real finding behind a safe twin.

security12static analysis2ASTGemini API235design patterns

Premium Article

The notice said that Agent Studio's auto-generated /api-proxy backend had an SSRF flaw, and that web apps created before July 1, 2026 should be regenerated and redeployed.

I stopped reading and realised I had no way to answer the obvious follow-up question: which of my own services actually take a URL from the outside and go fetch it?

As an indie developer I have accumulated a handful of small services over several years. Grepping for requests.get returned dozens of hits, and none of them told me which ones were genuinely reachable from user input. The only honest answer was to read each one.

The arrival of purpose-built security models — Gemini 3.5 Flash Cyber is scoped to discovering, verifying, and patching vulnerabilities — made it tempting to hand the whole job over. My first attempt did exactly that, and it stopped working after two weeks. Here is why it stopped, the three-layer setup I rebuilt, and the part that took the longest to get right: fingerprinting findings so the same one never arrives twice.

Every number below comes from fixtures and real code trees I ran on my own machine. The reproduction steps are included.

Why handing over the whole repository stopped working

The first version was naive. Bundle the changed files, ask the model to point out anything that looks like SSRF, file the answers as issues. It worked, in the sense that it produced output. It failed for three reasons.

The same finding kept coming back. Add one comment line and the model flags the same function again. I built a ledger to suppress duplicates, and immediately discovered that the design of the ledger key was the actual problem — most of this article is about that key.

Confidence scores were unusable. I asked for high / medium / low. Sending identical input three times swapped high and medium. Any threshold I drew was drawing on sand.

And it cost money for nothing. Even on a small diff, the surrounding context inflates input tokens, so I was paying full price on days when every single finding was a known re-report. If you want the per-request accounting that makes this visible, the approach in Track Gemini API Costs in Production with usageMetadata is the foundation I use.

The underlying mistake was asking the model to do discovery and judgement in the same breath. Discovery is a great fit for a machine. Judgement, handed to a model, gives you a verdict whose basis moves every time you ask.

Three layers: extract, hypothesise, verify

LayerOwnerOutputDeterministic?
ExtractYour own AST scannerCandidate sinks plus fingerprintsYes
HypothesiseThe modelA reproduction and a patchNo, and that is fine
VerifyYour own harnessAccept or rejectYes

The whole point is to confine the non-deterministic layer to the middle. The model is never asked whether something is dangerous. It is asked: assuming this is dangerous, how would you reproduce it, and how would you fix it? Whether it was dangerous is settled entirely by whether that reproduction runs.

Once the model's self-assessment is out of the acceptance path, swapping models stops being a migration. I call the hypothesis layer through an interface, which lets me compare a general Flash model against a purpose-built one using the same ledger.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
A ~90-line AST scanner for outbound-request sinks, measured at 4,016 files in 28.2 seconds (7.0ms per file)
Line-based fingerprints re-reported 8 of 8 findings as brand new after only comments and a variable rename — with the fix that survives both
Why the coarser fingerprint reaches 7/7 tracking yet lets an allowlisted function swallow a vulnerable one, reproduced step by step
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Gemini Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

Advanced2026-09-05
Two Kinds of Video Questions: Why I Send "Find It" and "Prove It Isn't There" Down Separate Paths
Agentic video understanding lets the model decide which parts of a video to watch. That works beautifully for finding things, and it quietly breaks when you need to prove something never appears. Here is how I split my questions, and the coverage check I now run first.
Advanced2026-08-31
Define What Counts as a Duplicate Before Adding Embedding Search to Your Image Pipeline
My dedup check flagged two prints with identical composition but different colors as one image. Here is how I split duplicate detection into three layers, measured where perceptual hashing ends, and decided what embedding search is actually for.
Advanced2026-08-09
The Memory Wasn't Lost — It Was Written to a Different Profile
A Memory Bank profile is identified by the pair of schema and scope. When call sites build that scope slightly differently, extra profiles appear with no error at all. Here are the measured numbers for how badly it fragments, and how three candidate fixes actually performed.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links