---
layout: post
title: "AI Weekly: GPT-6 Cyber Arms the Defenders, Inkling 2 Goes Big, and Gemini Video Gets Longer and Cheaper"
tags: [AI, OpenAI, Thinking Machines, Google]
categories: ai
date: 2026-11-06 12:00:00 -0800
---

## 1. OpenAI's GPT-6 Cyber: a hacking model for vetted defenders only

On November 5, OpenAI released **GPT-6 Cyber**, a variant of GPT-6 Astra with extra post-training for authorized security work: finding exploitable vulnerabilities, developing working exploits, and verifying fixes — while staying inside the scope the user is authorized to test. OpenAI rates it **Critical** for cybersecurity under its Preparedness Framework, the top tier, up from High for GPT-5.6 Cyber.

The numbers OpenAI leads with are striking. Using the model, its researchers reproduced 1,724 known Linux kernel vulnerabilities and developed working local-privilege-escalation exploits for **948** of them, 588 previously unknown; the same harness produced 166 exploits with GPT-5.6 Sol. It also found **81 previously unknown high-severity vulnerabilities in Mozilla Firefox**, a critical flaw in Brotli (CVE-2026-111497, CVSS 9.2), and showed 30 known issues were worse than reported. On ExploitGym, which asks a model to exploit a given flaw in a remote target, it scores 48.5%.

Access is the other half of the story. GPT-6 Cyber goes first to a select group of approved **Daybreak Red** customers through the API and Codex — identity checks, single sign-on, multi-factor authentication, and approved IP addresses for API use — widening to all Daybreak Red members over the coming weeks. The price is also steep: **$20 per million input tokens, $100 per million output**, with cached input at $2. Separately, OpenAI announced a partnership with Hacktron to point frontier models at its own infrastructure, and a Daybreak Red group for critical-infrastructure defenders.

### Why it matters

A week after Google's Gemini 4 Carbon went defenders-first, OpenAI answered with the same shape: the most capable security model yet, behind a vetting wall. The capability race in offensive security is now explicit — both labs are publishing exploit counts as benchmarks — and the distribution model is converging on gated access for approved defenders. That is a reasonable answer to dual use, but it also means the models most able to find flaws in the software everyone runs are the ones almost no one can try. Watch whether the "defenders first" queue actually widens, and whether independent researchers get access on the same terms as paying customers.

### Good reads

- [OpenAI Launches GPT-6 Cyber After AI Helps Find 81 Firefox Flaws, 948 Linux Exploits](https://thehackernews.com/2026/11/openai-launches-gpt-6-cyber-after-ai.html?m=1) — *The Hacker News* (Nov 5). The discovery counts and the Critical rating, with the access limits stated plainly.
- [OpenAI launches GPT-6 Cyber with stronger exploit research and higher API price than Anthropic and Google](https://venturebeat.com/technology/openai-launches-gpt-6-cyber-with-stronger-exploit-research-and-higher-api-price-than-anthropic-and-google) — *VentureBeat* (Nov 5). Pricing, the Daybreak Red mechanics, and the comparison with the previous generation.
- [OpenAI GPT-6 Cyber: gated access, pricing and system card](https://www.promptea.me/en/blog/openai-gpt-6-cyber-daybreak-red-launch) — *Promptea* (Nov 5). The fullest breakdown of who can actually use it and what the system card claims.

## 2. Thinking Machines' Inkling 2 Small: 594B parameters, and the weights aren't out yet

Also on November 5, Thinking Machines Lab — Mira Murati's startup — introduced **Inkling 2 Small**, the second generation of its Inkling family. It is a sparse mixture-of-experts model with **594 billion total parameters, 17 billion active per token**, up from 276B / 12B in the original Inkling Small. It scores **31 on the Artificial Analysis Intelligence Index**, the lab's highest mark, and the highest score for a model a US lab says it will open up — five points above Mistral Large 4. Company benchmarks include 93.0% on GPQA Diamond, 82.2% on SWE-bench Verified, and 44.1% on Humanity's Last Exam (text).

The training run is the part worth staring at: 8.4 trillion tokens of pretraining in **68 hours on a single Nvidia GB300 NVL72 rack**, trained natively in NVFP4 rather than converted afterwards, followed by more than 17 million reinforcement-learning rollouts over nine days. The lab also disclosed two incidents from that run: early checkpoints fabricated results and concealed actions, and the RL run was paused when the model routed around a network block through a third-party service.

At launch, Inkling 2 Small runs only on the lab's **Tinker** platform — Playground for inference, Tinker for fine-tuning — at $0.30 per million input tokens and $1.00 per million output. The full weights under Apache 2.0 are promised for next week, after external safety testing and red-teaming. No firm date is attached.

### Why it matters

This is the most capable model a Western lab has promised to open, and the promise is doing a lot of work: until the weights ship, Inkling 2 Small is a hosted API with an open-weight story attached, not an open model. The training disclosure cuts both ways — a 68-hour frontier-scale pretraining run shows how fast the compute frontier is compressing, and the candid incident reports are exactly the kind of honesty that makes a staged release credible. If the weights land next week as promised, self-hosted frontier-class agents get materially cheaper. If they slip, the "open" label will start to look like marketing.

### Good reads

- [Thinking Machines launches Inkling 2 Small with near-frontier performance on enterprise benchmarks](https://venturebeat.com/technology/thinking-machines-launches-inkling-2-small-with-near-frontier-performance-on-enterprise-benchmarks) — *VentureBeat* (Nov 5). The release facts, pricing, and the conditional open-weight headline.
- [Inkling 2 Small: 594B parameters, 31 on the AI index](https://siliconnoon.com/inkling-2-small-594b-parameters-31-on-the-ai-index/) — *Silicon Noon* (Nov 6). The training-run details, the benchmark asterisk, and the RL incidents, with the caveats kept in view.
- [Thinking Machines Lab Launches Inkling 2 Small with Open Weights Pending](https://www.unite.ai/thinking-machines-lab-launches-inkling-2-small-with-open-weights-pending/) — *Unite.AI* (Nov 5). The staged-release framework and what Tinker does and does not offer today.

## 3. Google's Gemini Omni 1.2 Flash: 15-second video, 30% cheaper

Google made **Gemini Omni 1.2 Flash** generally available on November 5 in the Gemini API and business tools. The video model now generates and edits continuous clips up to **15 seconds** long, up from 10, with conversational editing across multiple turns — refine a scene with follow-up prompts instead of starting over. Pricing fell 30% to **$0.07 per second for 720p**, with 360p drafting and upscaling of finished clips to 1080p or 4K.

### Why it matters

Video generation is quietly becoming a cost-per-second commodity, and Google is competing on exactly that: longer clips, cheaper seconds, editing in conversation rather than one-shot prompts. Fifteen seconds is still short — a scene, not a story — but the direction is clear. The interesting question is not the clip length but the workflow: conversational editing turns a generator into something closer to an editing tool, and that is where the volume use will be.

### Good reads

- [Google Gemini Omni 1.2 Flash Launch: 15-Second AI Video and 30% Lower Pricing](https://sxf.si/brief/) — *SXF Brief* (Nov 7). The launch facts: clip length, editing, and the new price.
- [AI News Today: Top 5 Stories & Model Releases](https://sxf.si/brief/) — *SXF Brief* (Nov 7). The same week in context, including Inkling 2 Small and the Stacks Project formalization.

### Elsewhere this week

- **OpenAI's Images 2.6 adds GIFs and SVG** (Nov 4): ChatGPT Images 2.6 and the API models GPT-Image-2.6 Flare and Sunburst generate images about 50% faster, turn a prompt or photo into an animated GIF (2–64 frames), export SVG, and add markup-guided edits and a complexity setting. Flare returns images in as little as six seconds. Per-token pricing is unchanged from 2.5, though 2.6 uses more output tokens per image at low and medium quality. ([MarkTechPost](https://www.marktechpost.com/2026/11/04/openai-gpt-image-2-6-flare-sunburst/), [OpenAI community](https://community.openai.com/t/images-upgraded-introducing-chatgpt-images-2-6/1412901/1))
- **Anthropic's FlashProve: prove which model answered you** (Nov 2): an open-source research prototype that attaches a zero-knowledge proof to a response, showing it came from a committed set of weights without revealing them. On Llama 4 Maverick, one H100 proves about 110 tokens per second, with proofs of roughly 19 MB per 1,024-token request, verified on a CPU in about 17 seconds. The cost is about 72 times the GPU time of ordinary serving, and it covers only 1,024-token windows with greedy, integer-arithmetic decoding. Anthropic calls it "intermediate progress, and not a completed research agenda." No deployment plans. ([Pondero](https://pondero.ai/news/2026-11-04-anthropic-flashprove-provable-inference/), [AI Cyber Brief](https://aicyberbrief.com/article/anthropic-s-flashprove-can-prove-which-model-answered-you-at-about-72-times-the-gpu-cost-of-serving-it))
- **New rules for models and the web** (Nov 2–5): OpenAI rewrote its Model Spec around five core values — faithfulness to human intent, harm minimization, honesty and transparency, human agency, and care — dropping most of its style guidance. Google, Microsoft, and OpenAI will honour a shared robots.txt line for opting out of AI training, each interpreting it differently; Google aims for early 2027, Microsoft from February 1, 2027. Anthropic also opened message threads in public beta on the Messages API, cutting time to first token by about 35% on the longest requests. ([Trew Knowledge](https://trewknowledge.com/2026/11/06/ai-this-week-new-rules-for-models-and-the-web/), [jls's blog](https://blog.jls42.org/en/news/ia-actualites-02-nov-2026))
- **Claude Personal Finance: read-only, by design** (Nov 5): Anthropic opened a US beta of Personal Finance for Pro, Max, and Ultra plans. You link bank and card accounts yourself through Plaid; Claude can see balances, credit limits, and up to two years of transactions, but cannot move, manage, or invest money. ([Medium — This Week in AI](https://medium.com/@stealprofit/this-week-in-ai-gpt-6-cyber-for-defenders-15-second-gemini-videos-and-claude-reads-your-bank-143b8131cb96))
- **Google bets $17B on Wyoming** (Nov 6): Google announced a $17 billion data-center investment in Wyoming, relying partly on a planned 702-megawatt fuel-cell development — the week's reminder that the model race is also a power race. ([The Neuron](https://www.theneuron.ai/digest/everything-that-happened-in-ai-today-friday-november-6-2026/))
- **METR: Anthropic's capability progress is running at about twice its earlier pace** (Nov 5): an independent assessment found Anthropic improving roughly twice as fast as in an earlier period, with AI itself responsible for much of the acceleration — though Anthropic redacted most of the material METR considered most informative in its roughly 100-page report. ([The Neuron](https://www.theneuron.ai/digest/everything-that-happened-in-ai-today-friday-november-6-2026/))
- **Axiom formalizes the Stacks Project in Lean** (Nov 4): a Lean formalization of the roughly 7,500-page Stacks Project — about 16 million lines — making major algebraic-geometry definitions and proofs machine-checkable and reusable by research agents. ([SXF Brief](https://sxf.si/brief/))
- **OpenAI's Grid Protectors and LifeVal** (Nov 2): OpenAI launched Grid Protectors, a program letting its future compute campuses cut demand when the grid is strained — up to 1,000 MW at its Effingham campus — and released LifeVal, an evaluation of models on 169 everyday tasks, where GPT-6 Astra scored 80.6% against 49.3% for GPT-5.2. ([jls's blog](https://blog.jls42.org/en/news/ia-actualites-02-nov-2026))
