A free, read-only security check-up for your own local AI setup, an auditor for the text a local model actually reads, and a measured answer to whether the difference matters.
How safe is your local AI? Six weak spots, explained simply, the
main article: what Ollama gives away without a login, its published security holes, tampered
templates, prompt injection and saved chats, in plain words, with a ten-minute check-up.
The six weak spots of a local AI setup, each with the fix that matters most.
In plain words
A chat model learns to read conversations laid out in one exact way, and its maker publishes the
chat template that produces that layout. When you run the model with Ollama, the template has
been copied into the model file and often rewritten by Ollama. This project checks whether the text
the model finally reads is still the text its maker designed, and whether a difference changes what
the model does.
The chat template's three copies on its way to the model, and where the differences start for the 32 library models that differ.
What it found
In Ollama's library, 32 of 43 popular models read their tool conversations differently from
what their maker designed (snapshot of 22 October 2026, Ollama 0.40.7). In 24 of the 32, the
difference comes from Ollama's own version of the template. On Hugging Face, 5 of 22 differ.
It changes behaviour. On 1,240 tool-calling questions from the Berkeley Function Calling
Leaderboard, qwen2.5 answered 83.4% correctly with Ollama's layout and 87.0% with its maker's
(exact McNemar p ≈ 4×10⁻⁶). Read by Ollama's own parser on both sides, it was 84.9% against
88.1%.
A benchmarking pitfall. Ollama's engine keeps recent prompts in memory, and reusing one
changed answers to identical prompts at temperature 0. The test ran with that cache off and
checks every reply for reused tokens.
How many popular models read their tool conversations differently from their maker's template.
qwen2.5 on 1,240 tool questions: the maker's layout wins whichever parser reads the replies.
How it works
It never runs or downloads a model for the audit. It reads only the header of each model
file over HTTP range requests (7.3 MB of a multi-gigabyte file for qwen2.5) and renders twelve
harmless test conversations through each copy of the template.
Ollama's side is Ollama's own code for 41 of the 45 library files: a small Go helper imports
Ollama at the pinned version and runs its template code. The Hugging Face models and three library
files use a close Python copy of Ollama's other engine.
The difference classifier was checked against hand labels written before it existed: tuned on
24, frozen, then 28 of 28 on a held-out set.
The tool test is paired and controlled: same model file, same isolated server, temperature 0,
the same parser for both layouts in each comparison, and 60 repeated answers identical.
Code and data on GitHub
The auditor: tda/, and the
Go helper that runs Ollama's code: go-helper/.
The check-up for your own computer: python -m tda check, read-only, standard library only
(how to run it).
Every model's result and every rendered prompt:
runs/.