◉GEMINI LABJP
●OMNI 1.2 — Gemini Omni 1.2 Flash is generally available (11/5) with up to 15-second video and conversational editing; 1.1 Flash is routed to 1.2 on 12/3●COMPUTER — Computer Use is now generally available in the Interactions and GenerateContent APIs (10/30)●LIVE — Live and TTS preview models shut down as early as 11/17 (7 days left). Move to gemini-3.8-live and the 3.8 TTS models●CLI — Gemini API CLI (gemini-api) is out in beta (10/27): a zero-dependency client for agents and CI●2.5 PRO — gemini-2.5-pro and 2.5-flash are routed automatically on 12/1 (21 days left), to 3.8 Flash and 3.5 Flash-Lite●NEW — Stop Re-Reading Every Crash Report: Gre…●OMNI 1.2 — Gemini Omni 1.2 Flash is generally available (11/5) with up to 15-second video and conversational editing; 1.1 Flash is routed to 1.2 on 12/3●COMPUTER — Computer Use is now generally available in the Interactions and GenerateContent APIs (10/30)●LIVE — Live and TTS preview models shut down as early as 11/17 (7 days left). Move to gemini-3.8-live and the 3.8 TTS models●CLI — Gemini API CLI (gemini-api) is out in beta (10/27): a zero-dependency client for agents and CI●2.5 PRO — gemini-2.5-pro and 2.5-flash are routed automatically on 12/1 (21 days left), to 3.8 Flash and 3.5 Flash-Lite●NEW — Stop Re-Reading Every Crash Report: Gre…
Articles/Updates
◎ Updates/2026-11-11Beginner

When You Can't Tell Where Your Gemini Model Name Is Written: Three Places to Look Before December 1

Before the 2.5 models are rerouted on December 1, here is how to find where your model name lives (settings screens, environment variables, no-code tools) and a small Python script that sorts them by days left.

Gemini99model namesdeprecations3automatic reroutingbeginner17

Someone once asked me which Gemini model my morning-summary automation was using, and I couldn't answer. I opened the screen and it just said "Gemini." I couldn't even find the field where a model name would go.

What I'd like to say up front is this: the first job before a deadline isn't migrating, it's counting where your model names live. The 2.5 models are rerouted on December 1, and several audio previews stop on November 17. As of November 11, 2026, that leaves 20 days and 6 days. Here is the way I trace the names, in three kinds of places.

What changes, and when

I checked the official deprecations page on November 11, 2026. These are the rows that matter here.

ModelDateWhat happens
gemini-2.5-pro2026-12-01API calls are automatically routed to gemini-3.8-flash and billed at 3.8 Flash rates
gemini-2.5-flash2026-12-01Routed to gemini-3.5-flash-lite and billed at its rates
gemini-3.1-flash-live-preview and one other Live model2026-11-17Shut down. Replacement: gemini-3.8-live
Three TTS previews2026-11-17Shut down. Replacement: gemini-3.8-flash-tts or gemini-3.8-flash-lite-tts

The 2.5 models don't stop. They keep answering, just from a different model, which is exactly why it's easy to miss. The official page asks you to read the migration guide for breaking changes before December 1. Output length or shape can shift without a single error on screen.

Names usually live in one of three places

As an indie developer, I use the Gemini API for image classification in my apps. I assumed the model name lived in exactly one place in the code. When I actually went looking, there was a name outside the code too, so fixing the code alone would have changed nothing.

In most setups the places fall into three kinds.

KindTypical spotsHow to find it
Settings screenAutomation-tool scenarios, AI Studio prompts, the model picker in a chatbot builderOpen the part that calls Gemini and look for a "Model" field
Environment variableHosting or server settings, a .env fileLook for names like GEMINI_MODEL or MODEL_NAME
No-code / spreadsheetApps Script behind a spreadsheet, form integrations, something a contractor builtSearch for strings starting with "gemini-"

I go in that order. Starting with what you can see keeps your hands moving.

When the settings screen shows nothing

Some parts have no model field. Look for wording like "uses the default model." If the service decides, the name isn't in your hands at all, and the only job is to watch the service's announcements.

My mistake here was reading "I couldn't find it" as "it doesn't exist." The field was simply on another screen. Now anything I searched for and didn't find goes into the ledger as "unconfirmed," never as "none."

Put the names next to their deadlines

Once you know where the names are, list them. Make a spreadsheet with four columns and save it as CSV.

ColumnWhat to write
placesettings screen, environment variable, or no-code
wherewhich tool, which part
modelthe model name exactly as written
ownerwho can change it (you, a contractor, the service)

This script matches your list against the deadline table and sorts by days left. It uses no external libraries. The point is to decide what to touch first by days remaining, not by gut feeling.

import csv
import sys
from datetime import date
 
# Deadline table. Only dates confirmed on the official deprecations page.
DEADLINES = {
    "gemini-2.5-pro": (date(2026, 12, 1), "rerouted to gemini-3.8-flash (billed at 3.8 Flash rates)"),
    "gemini-2.5-flash": (date(2026, 12, 1), "rerouted to gemini-3.5-flash-lite (billed at its rates)"),
    "gemini-3.1-flash-live-preview": (date(2026, 11, 17), "shut down; replacement gemini-3.8-live"),
    "gemini-2.5-flash-native-audio-preview-12-2025": (date(2026, 11, 17), "shut down; replacement gemini-3.8-live"),
    "gemini-3.1-flash-tts-preview": (date(2026, 11, 17), "shut down; replacement gemini-3.8-flash-tts etc."),
    "gemini-2.5-flash-preview-tts": (date(2026, 11, 17), "shut down; replacement gemini-3.8-flash-tts etc."),
    "gemini-2.5-pro-preview-tts": (date(2026, 11, 17), "shut down; replacement gemini-3.8-flash-tts etc."),
}
 
 
def main(path, today=None):
    today = today or date.today()
    rows = []
    with open(path, newline="", encoding="utf-8") as f:
        for r in csv.DictReader(f):  # columns: place, where, model, owner
            model = r["model"].strip()
            if model in DEADLINES:
                due, note = DEADLINES[model]
                rows.append(((due - today).days, r, due, note))
            else:
                # A name missing from the table is not "safe"; it is unchecked.
                rows.append((9999, r, None, "not in the deadline table; check the official page"))
    for left, r, due, note in sorted(rows, key=lambda x: x[0]):
        when = f"{left} days left until {due}" if due else "no date known"
        print(f"[{r['place']}] {r['where']} / {r['model']} / owner {r['owner']} -> {when}: {note}")
 
 
if __name__ == "__main__":
    main(sys.argv[1])

Try it with a three-row CSV like this one.

place,where,model,owner
settings screen,automation scenario "morning summary",gemini-2.5-flash,me
environment variable,server setting GEMINI_MODEL,gemini-2.5-pro,me
no-code,Apps Script behind a spreadsheet,gemini-3.1-flash-tts-preview,contractor

Run on November 11, 2026, the no-code row comes first with 6 days left, followed by the two December 1 rows at 20 days. On screen, the settings-screen row had looked like the urgent one. I only saw the contractor's row was first once the list was sorted by date.

Why unlisted names go last

A name that isn't in the table isn't safe, it's unchecked. gemini-2.5-flash-lite, for instance, is not deprecated on the official page, but a model that isn't listed could still become unavailable for another reason. I'd rather the script say "no date known" where I can see it than quietly imply all is well.

When you can't fix it yourself

Rows owned by a contractor or by the service are out of your hands. Two things still help.

  1. To a contractor, send the model name, the place, and the deadline in one message, with a screenshot if you have one.
  2. If the service picks the name, put a reminder on your calendar to check its announcements page.

Leave those rows alone and you'll learn about them on the morning of the deadline. I have left a contractor-built piece unchecked myself. These days, the rows I can't fix are the first ones I contact about.

What to do next

Open one settings screen and see whether a model field exists. Copy whatever you find into the first row of the CSV. If a name is hard to read, reading a model name in four parts may help. To count names inside code mechanically, see counting them from your own folder. For checking what actually answered after a reroute, I wrote about logging requested versus served models.

With even one row in the ledger, you can meet December 1 calmly. That is a line I try to hold, even in busy weeks.

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 $10 for lifetime access
View Membership →

If you found this article helpful, a small tip ($1.50) would mean a lot to us. Your support helps keep this site ad-free and covers server and hosting costs.

Related Articles

◉ Gemini Basics2026-10-24
When Model Names Stop Making Sense: Reading Them in Four Parts
How to read a long Gemini model name like gemini-3.8-flash-lite-tts as generation, line, variant and release stage, plus a short script and where to check words you can't read.
◎ Updates2026-10-25
Counting the Audio Preview Names That Stop on November 17 in Your Own Folders
Five TTS and Live preview models are scheduled to stop on November 17. Here is a short Python script that lists which file and line in your project still names them, plus the order I would fix what it finds.
◎ Updates2026-10-21
When Gemini 2.5 Pro Vanished from the Picker: Why It Isn't Deprecated, and How to Keep Your History
If Gemini 2.5 Pro disappears from your AI Studio model list, here is how to tell a real shutdown from a visibility change using the official deprecations page, and how to keep your past conversations independent of any one model.