Skip to content

Science1 publisher3 min readPublished

Daniel Tant's partial key let GPT-6 Astra decode an 1809 Napoleonic cipher letter

Carter Church used OpenAI's GPT-6 Astra to decode an 1809 Napoleonic cipher letter in six hours from one prompt and one scan. Because the answer can be checked, the case is a good calibration test for coded archives, though it rests on a single letter Church picked to demonstrate the model.

The Scientist · Science desk

Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

Illustration accompanying Daniel Tant's partial key let GPT-6 Astra decode an 1809 Napoleonic cipher letter
Generated illustration

What happened

  • The letter, sent at Napoleon's request by his stepson Eugène to Marshal Marmont on the Adriatic coast, gave the positions of every other French and allied army.
  • The only public image was a low-resolution scan printed in a French army journal in 1969, showing 1,300 signs drawn from 155 distinct symbols.
  • Through its own web research, the model found a partial table by cryptology historian Daniel Tant, never before linked to the letter, covering 33 symbols and about a third of the text.
  • Michael Rowe of King's College London said the decoded text largely repeats a letter Napoleon had already sent Eugène, so it adds little new history.

Compiled by The ScientistSomething wrong?How this is made

Why it matters

  • constraint Ciphers with no published partial key remain an untested case for this method, since the model's entry point here was a specialist's 33-symbol table.
  • capability A model that matches a mislabelled catalogue entry to the document it decodes can fold the search for reference keys into the decoding run itself.
  • precedent Rowe argues that success on a letter with known contents earns the same tool more trust when it is pointed at letters whose contents nobody knows.
  • decision Archives adopting the method still have to staff the checking step, since Church calls verification far harder than generating candidate solutions.

GPT-6 Astra's route into the cipher began with a human specialist's work. Daniel Tant's table gave the meanings of 33 of the letter's 155 distinct symbols [9], about 21 percent of them [3]. The code is homophonic, so common letters have several interchangeable symbols [8]. That is why those 33 symbols covered about a third of the text [9]. From there the model worked out the remaining 122 symbols and translated the message [1][16]. With 1,300 signs spread across 155 symbols, each one appears about eight times on average [2].

Finding the table was part of the run, and it is the step I find most interesting. "Astra made this connection itself via web research as it was investigating," Church said [10]. Tant had catalogued it as a code between Eugène de Beauharnais and a "Général Grammont," a name Church suggests may be a mistake for Marmont [11].

The answer has two separate checks. "I didn't believe it at first," Church told Live Science, but the solution is "mechanically testable: there's essentially zero chance an incorrect key could produce coherent and historically consistent output" [3]. Rowe's check is external. Historians have Napoleon's own letter to Eugène setting out what the ciphered message should contain, and Rowe said that gives fair confidence in the translation [13].

Rowe is describing a known-answer test, the cleanest control a historical decode can get. "If you've tested out AI on this letter, where you pretty much know what the contents would have been because it's referred to in another letter, the AI does its thing and essentially reproduces what you're expecting to see," Rowe told Live Science [14]. The same control limits what the letter can add. Rowe said the cipher version repeated a large segment of the original letter, so in a sense it tells historians nothing new [15].

Live Science described the cipher as previously unsolved [17]. The sample is one letter. Church, an AI engineer at cybersecurity firm Sentinel One, found it while searching for an appropriate code to break to demonstrate the model's capabilities [1][6]. The account does not say how many other ciphers were tried, or what the six-hour run cost in compute [2]. The thing this doesn't tell you is how the model does on a cipher with neither a published partial table nor a surviving parallel letter.

I think the case supports using a model like this as a fast first pass on ciphers that can be checked, with specialists still supplying the partial keys and the parallel texts used to test the output [9][13]. Church said much the same. "The verifiability of solutions is actually the most difficult part, far more difficult than generating potential solutions," he said. "You simply cannot automate accountability." [12]

What to watch

  • Whether Church or OpenAI publishes the prompt, the transcription and the full recovered key so others can rerun the decode.
  • A run of the same method on a cipher with no published partial table and no surviving parallel letter to check against.
  • Whether the Grammont entry in Tant's catalogue is confirmed as a misnaming of Marmont.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories