
An encrypted situation report sent to Napoleon’s general Marmont was long considered one of the unsolved classics of historical cryptography. Now it can be read in plain text: developer Carter Church reconstructed it with OpenAI’s GPT-6 Astra from a single scanned journal plate. His case is not an isolated one. The best-known list of unsolved ciphers is receiving so many solutions that its curator can barely keep up with logging them.
Key takeaways
- The letter to General Marmont dates from March 1809 and was previously known only from an illustration in a 1969 French military journal, which gave the wrong date.
- GPT-6 Astra transcribed the 1,300 units on the scan, sorted out 155 distinct symbols, and broke the cipher in about six hours of compute time.
- The plaintext matches a printed order Napoleon issued on March 16, 1809, and fills a gap in the published edition of his correspondence.
- The Cryptiana collection now lists the letter as solved and records further solutions produced with Claude Opus 5.5, Claude Fable 5.1, and ChatGPT.
- The solution, the key, and verification scripts are public, so specialists can check the result for themselves.
A letter nobody could read
In the spring of 1809, Austria was about to attack Bavaria, Napoleon’s ally. Auguste de Marmont was commanding roughly 13,000 men in Dalmatia, on the far side of the Adriatic and cut off from every other French army. On March 16, 1809, Napoleon instructed his stepson Eugène de Beauharnais, the Viceroy of Italy, to brief Marmont on the positions of all French and allied forces, in a cipher letter carried by a reliable officer.
One such letter survives. Its first line is plain French, followed by 24 rows of two-digit numbers, stray letters, and invented symbols. The key was lost. The document was known only from a plate in an article by J. Vilcoq, published in 1969 in the Revue historique des Armées, which dated the letter to 1807. The most recent solver notes on record stated flatly that there was nothing to work on, because the ciphertext was not available anywhere.
Yet the journal has been digitized and is freely accessible through Persée, the French academic archive. The French cryptology historian Daniel Tant had also already published 33 letter values for the code. Those two public files were Church’s starting point.
How the model worked
The cipher is homophonic: common letters get several interchangeable symbols, so they cannot simply be identified by how often they appear. The letter contains 1,300 units built from 155 distinct symbols. Tant’s known values unlocked about a third of them; the remaining two-thirds had to be worked out from the letter itself.
What stands out is that transcription and cryptanalysis ran as a single workflow. According to Church’s write-up, GPT-6 Astra cut the plate, just 1,202 by 1,836 pixels, into rows, read the hand-drawn symbols, and decided which of the 175 provisionally distinguished marks were really the same symbol. Only then did the actual decryption begin, using a classic technique called simulated annealing: a search program tries out assignments step by step and scores each candidate by how statistically French the resulting text looks. The reference statistics came from letter sequences in works by Victor Hugo, Alexandre Dumas, and Marmont’s own memoirs.
Symbols that kept breaking otherwise good French were tested as whole words instead. That revealed close to 30 symbols standing for words such as “de,” “que,” “vous,” or “général.” Every proposed value was checked against each place the symbol appears on the plate. As a control, Church had the solver start over from scratch, this time with Marmont’s memoirs and all Napoleonic texts removed from its language model. It arrived at the same reading. In other words, the key does not depend on the system already knowing the history it was decoding.
In total, GPT-6 Astra ran for about six hours, plus what Church describes as a few evenings of his own work. Church says he had never broken a cipher before.
What the letter says
The plaintext is a situation report. The Duke of Danzig, Marshal Lefebvre, holds Munich and Passau with 40,000 Bavarians. Davout stands at Bayreuth with 80,000 French troops, Masséna at Ulm and Donauwörth with 60,000 men, and Oudinot at Augsburg and along the Lech with an elite corps of 40,000. Poniatowski threatens Kraków with 30,000 Poles. The seven forces listed match Napoleon’s printed order of March 16 in sequence and in numbers, which strongly supports the reading.
But the letter also contains what Napoleon’s order lacks: the Austrian positions at Laibach, Villach, and Salzburg, which line up with the actual Austrian deployment in early April. It also fills a gap. In the 1865 printed edition of Napoleon’s correspondence, the sentence telling Marmont not to be held up by a handful of something breaks off in a row of dots. At that point the decrypted letter reads “quelques troupes ou un rassemblement de canailles,” meaning “a few troops or a gathering of rabble.” Church stresses that the letter paraphrases Napoleon’s order and does not prove his exact wording. One detail also shows how propaganda worked: the line claiming the Russians were marching on Austria matched Napoleon’s instruction of March 21 to spread exactly that message. In reality, the Russian army did not cross the border until early June.
A wave of new solutions
Satoshi Tomokiyo, who has documented unsolved historical ciphers for decades on his website Cryptiana, reviewed Church’s solution and now lists the letter as solved, with the date corrected to 1809. Since September, his site has carried a notice that he is receiving many solutions and has not caught up with recording them. The list of recent entries shows why: on October 1 and 2, Tomokiyo logged two solutions produced with Claude Opus 5.5, including a cipher connected to Mary, Queen of Scots. In late August, a secret script by the Scottish writer Thomas Urquhart from 1652 and 1653 was solved with Claude Fable 5.1, and in early October a Spanish cipher letter from Emperor Charles V dating to 1521 was solved with ChatGPT.
The spark for Church’s attempt came from the same wave. In September, New York developer Carter Leffen set GPT-6 Astra loose on an unsolved Enigma radio message from July 10, 1941. The model worked for about ten hours, built an Enigma simulator, and used as its foothold the place name Rosenow, which appeared twice in an already decrypted message from the same day. The result was a soldier’s request for his route of march. According to The Decoder, independent expert review was still pending.
What this means for research and the curious
Church’s real point is not a technical one. None of the material was hidden, he writes: Tant’s table was public, Napoleon’s letters have been in print since the 1860s, and Marmont’s memoirs are freely available. A patient specialist could have solved this in 1970, but would have had to spend weeks on period French, 1,300 hand-drawn symbols, and the statistics, all for a single plate. The work never got done because nobody with those skills could justify the time.
That calculation is now changing. Anyone with curiosity, some persistence, and access to a strong model can take on problems that used to founder on the sheer amount of labor. What matters is how Church went about it: a published transcription, a public key, and a script that reproduces the reading. He also flags five symbols whose meaning remains open, none of which would change the sense of the letter. That makes the result verifiable, and verifiability remains the bar. An AI solution is a hypothesis until specialists have checked it. For archives, historians, and hobby cryptologists, this could still mark the start of a productive period: many lists of “unsolved” cases are likely to get a lot shorter soon.

