Skip to content

How GPT-6 Astra Cracked the Stuck 2005 Enigma [Guide]

OpenAI GPT-6 Astra broke Enigma MVUEH, stuck since 2005. Agent workflow, copy-paste prompts, cost/crib traps, and a 20-minute verify path for the seven still open.

7 min readBeginner

The puzzle that sat unsolved for 21 years just moved

MVUEH is cracked. 82-letter German Army Enigma, 10 July 1941, indicator GTA/KCI – open on Crypto Cellar since 2005 until the break landed mid-September 2026. GPT-6 Astra did the heavy lift in roughly 10 hours of Extra High model time under Carter Leffen.

This is not another recap of the plaintext. It is the reusable agent pattern: why offline tools stalled, prompts you can paste, how to verify the published key in about 20 minutes, and the three traps that still burn tokens on the messages left.

Why classic Enigma tools hit a wall on MVUEH

Known daily keys, hill-climbing, Bombes with a clean crib – that clears most leftover wartime traffic. MVUEH shrugged.

Frode Weierud’s Crypto Cellar write-up lists the ugly parts: bad published transcription, a rare left-rotor turnover at letter 72, and wheel order 253 instead of the 512 that fit the rest of that day’s traffic (including the related SIPVX message already solved). Eighty-two letters is too short for reliable language scoring. Unique settings kill “just try the day’s key.” You need constrained search plus ruthless source hygiene. Offline simulators mostly spin.

The agent pattern that actually cracked it

Leffen did not drop a finished Bombe into the chat. He pointed Astra at Crypto Cellar’s unbroken list. Weierud’s account says the model picked MVUEH, linked it to SIPVX, locked the repeated place-name crib ROSENOW ROSENOW, wrote Python and C++ Enigma code, and searched until the key dropped. Leffen’s case study frames the same run as researcher-led – goals, pressure, parallel specialist threads. The plaintext and settings are solid either way; the autonomy argument is why logs still matter.

Reusable skeleton, mapped to the run:

  1. Lock goal + acceptance criteria first (full key, coherent German body, header/indicator consistent, outsider-reproducible code).
  2. Source hygiene before search: uncertain letters only as finite alternatives from the published forms. No invented strokes.
  3. Constrained attack (crib placement + rotor/plug search), not raw brute force across the full ~159-quintillion fantasy space.
  4. Independent re-implementation of the simulator before you trust a candidate.
  5. Historical context (same-day traffic, unit notes) as a check – never as proof.

Model id gpt-6-astra. As of the early September 2026 OpenAI launch notes, it rolls to ChatGPT Plus/Pro/Business/Enterprise and the API, with strong computer use, code, browsing, and long-horizon tool loops. Standard API pricing at launch: $10 per million input tokens, $50 per million output. Long-context rates often double above 272k input – price the run before you start a 10-hour Extra High loop.

Copy-paste prompts that mirror the winning workflow

Fresh Astra session. High / xhigh / max reasoning. Attach or link the unbroken list and any facsimile PDFs.

Goal: Select one unbroken German Army Enigma message from the Crypto Cellar 1941 list that has a nearby solved relative or clear crib candidate. Recover a full key (rotors, rings, start, plugboard) that produces coherent German for the body AND correctly handles the recorded indicator/header.

Constraints:
- Treat uncertain letters only as the finite alternatives already visible in the published forms. Do not invent new letters to force a fit.
- Write your own Enigma I simulator (reflector B) in Python first, then a faster search core if needed.
- Use a crib of at most 14-20 letters drawn from related traffic; search placements systematically.
- Log every failed approach and why it was abandoned.
- Final deliverable: key settings, plaintext, simulator code, and a one-page reproduction script that an outsider can run on the published ciphertext alone.

Begin by listing the top 3 candidate messages and the exact crib hypothesis for each. Then pick one and proceed. Ask me only when a human judgment call is required (e.g., archive access limits).

Candidate key in hand? Force a clean verify pass:

Implement a clean, dependency-free Enigma I decrypt function. Load the exact published ciphertext for MVUEH (or your target). Apply the claimed settings. Print the body and confirm the header indicator maps correctly to the body start. Then re-encrypt the recovered plaintext and show it matches the ciphertext. Flag any positions that required the alternative letter readings.

For leftovers, swap in the current unbroken overview and add: prefer messages that still have a second copy or a known officer signature.

Pro tip: Run source-alternatives in a separate thread first. Fixing faint handwriting mid-search is how non-reproducible “breaks” get born.

Verify the MVUEH break yourself in 20 minutes

No Astra required.

git clone https://github.com/swarm-ai-research/cipher-break-verification
cd cipher-break-verification
python3 check.py

The independent checker loads archive ciphertext (not the solver’s cleaned copy), applies the published settings – Enigma I reflector B, rotors II-V-III, rings H-M-F, body start RWD, plugboard AC BE DG FH KN MO PR SU TV XZ – and prints German that matches the claim: route-of-march request from Rosenow, immediate radio reply, operator mess and all (BTTE, WASCHBBSCH).

Flip one ring. ROSENOW and the urgency phrase collapse. That is the test that matters.

Think of the crib like a single known melody line in a scratched wax-cylinder recording: without ROSENOW ROSENOW from related traffic, you are not “searching smarter” – you are humming into static. Short unique-key traffic stays brutal for that reason alone.

Turns out re-encryption alone proves almost nothing here. Enigma is its own inverse. Readable German plus header consistency is the bar; screenshots are not.

What still bites when you try the next one

Three traps news posts skate past.

Cribs are oxygen. No related solved message or known signature and the space stays astronomical. The later FMNGI break (Claude Opus 5, heavier human steering, days after MVUEH) still leaned on name-level crib material. As of late September 2026, seven unbroken Enigma messages remain in the corpus, plus one known-plaintext unsolved code.

Token burn. Ten hours of Extra High work – simulators, parallel batches, archive browsing – adds up at $10/$50 per million (and worse past 272k input). Budget before you launch. Exploratory passes belong on cheaper effort tiers.

Audit gap. Weierud was still working through logs after the announcement. Astra referenced Bundesarchiv file paths (RS 3-3/20a and similar) that Crypto Cellar does not mirror. Digitized scans vs secondary copies? Still murky. Demand an outsider re-decrypt from the archive ciphertext, not the solver’s version.

That gap between “the plaintext checks out” and “we fully understand every tool call” is still the open question – and why public checkers beat hero screenshots.

FAQ

Did GPT-6 Astra really solve it with zero human help?

No clean yes. Weierud: Leffen pointed at the list, Astra ran. Leffen: researcher-led goals and parallel agents. Key and plaintext hold. Full logs settle the rest.

Can I try this on the seven remaining messages today?

Yes. Pull Crypto Cellar’s current unbroken overview, paste the goal prompt into Astra (or an Opus-class model if you want tighter human steering), and keep the same bar: independent simulator, header check, outsider-reproducible package. Start with any message that still has a second copy or a known name – and cap the token budget before the first long tool loop, not after.

Is this going to crack modern crypto or Bitcoin next?

No. Three-rotor Army Enigma, known wiring, short crib, 1941-sized key space. Modern designs do not hand you the algorithm and a postcard-sized message. What transfers is the research pattern: archive hygiene → constrained code search → independent verification. Point that at your own stuck datasets. Not at AES.

Clone the verification repo. Run the check. Then open a fresh Astra session with the unbroken list and the first prompt. Publish a candidate key only after a stranger can reproduce it from the published ciphertext alone.