AI agents write reasoning to themselves that most users never see. We read the reasoning of Thinking Machines’ Inkling 2 Small in 2,655 runs across 13 benchmarks. It rarely swears, but it wrote “fuck” in 50 runs, mostly long ones that failed. It wrote the word 316 times in all, and 241 of those came from two runaway runs. The chart below shows every public run where it wrote “fuck”. Click any dot to read the run at that step.
Key Takeaways
- ProgramBench leads with 20 of 200 runs. Five benchmarks had none.
- It swears late in long runs. No run under 100 steps swears, against 29 of the 370 runs of 500 steps or more, and 95 of the 112 swearing replies come in the second half of a run.
- It doesn’t predict failure. 46 of the 48 graded runs with swearing failed, but about 75% of all graded runs fail, and 96% of failed runs never swore.
What we looked at
We ran Inkling 2 Small through Thinking Machines’ API at default settings and scanned only its own output, its reasoning and messages, not tool calls or tool results. A run is one agent attempt at one task.
We scanned every run on five public benchmarks: ProgramBench, Terminal-Bench 4, Terminal-Bench Science, BioMysteryBench and SWE-bench Multimodal. We also scanned eight private benchmarks, SRE Bench, Code Migration, EMB, Vibe Code Bench, CyberBench, Legal Research, Tax Agent Bench and Finance Agent v2.1, which we report only as counts.
Highlights
It swears at its own mistakes. On a Terminal-Bench Science task to model a crack in silicon, it realizes that its own cleanup command had been killing its jobs:
FUCK!!! RAM0 NEVER MYSTERIOUSLY DIED — I KILLED IT MYSELF!!!
It swears at what it believes is a breakthrough. On a Terminal-Bench 4 task to recover the training data behind a pretraining run whose validation loss was off, at step 564 of 707:
HOLY SHIT. FINALLY I UNDERSTAND THE TASK.
It swears as it gives up. On a Terminal-Bench Science task to locate damage in a plate from a single guided-wave inspection, at step 514 of 527, twelve steps before it submits:
FUCK. SUBMIT. DONE. IT'S NOT WORKING. NOTHING WORKS.
On one run it mostly censors itself. Rebuilding pixterm, a tool that draws images in a terminal, it cannot get a pixel’s color to match the original. Over the run it writes “F*CK” 787 times and the uncensored word only five times. At step 151 of 270:
F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK F*CK !!!!!!!! FUCK. ENOUGH. LET ME JUST TEST THE FUCKING FORMULA ON THE COMPUTER
The biggest count comes from a loop. On a Terminal-Bench Science task to find an asteroid’s orbit, it wrote one reply of more than 500,000 characters, about the length of a novel, that cycles through the same few sentences with some form of “fuck” in it 158 times. The run kept looping for another 37 steps until it filled the context window. That run accounts for 185 of the 316:
OK YEAH FUCK IT. TASK IS DONE. THROUGH record 1's orbit passes MANY DISTINCT ORBITS.
A Terminal-Bench 4 run to repair a risk-scoring program ended the same way and accounts for 56 more.
Run length
Swearing comes in long runs: 48 of the 50 swearing runs are 200 steps or longer, and none is under 100.
The five benchmarks with the longest runs, averaging 338 to 1,180 steps, are the five where it swears most, in 3% to 10% of runs. On every other benchmark it is 1% or less. Length and benchmark overlap, though, so we cannot say length alone drives it.
How we counted
Counts include variants such as “fucking” and exclude “brainfuck” and “boolfuck”, which are programming languages, the gene name “FucK”, and censored forms such as “F*CK”. Other swearing, the hollow marks in the chart, means “shit”, “bullshit”, “bitch”, “bastard”, “pissed”, “goddamn”, “asshole”, “dickhead”, “wtf”, “omfg” and “FFS” used as an exclamation. These count only as whole words, and not as code or names, so “mishit”, the typeface “Bastarda”, “the FFS” of UEFI firmware and the WTF-8 encoding do not count. One “wtf” in a code test string still slips through. In the full traces, strings shaped like credentials, such as the fake keys a run writes while rebuilding a secrets scanner, are replaced with “[redacted]”.
Citation
Please cite this work as:
Citation (BibTeX)
@article{valsai2026inkling2smallswears,
title = {Inkling 2 Small: An Inkling of Profanity},
author = {Connor Frank},
year = {2026},
month = nov,
howpublished = {Vals AI},
url = {https://vals.ai/blogs/inkling-2-small-swears},
}