Immich 3.3.6 is an apology: onnxruntime enabled telemetry by default and the ML container reported to Microsoft
A patch release that opens with an apology: onnxruntime turned telemetry on by default, so Immich's ML container reported anonymous metrics to Microsoft. 3.3.6 turns it off.
Immich 3.3.6 is a tiny release with one change: disable onnxruntime telemetry. I read the whole note anyway, because of how it starts.
Unfortunately we missed that onnxruntime enabled telemetry by default in a recent release, resulting in the ML container automatically sending anonymous metric data to Microsoft. We have now disabled it. Apologies to everyone that we did not catch this change immediately, and thanks to our community for flagging it!

An open-source project apologizing over anonymous metrics. That is the part worth writing down, more than the patch itself.
What happened
onnxruntime is the inference runtime Immich’s machine-learning container uses for things like face recognition and semantic search. At some version it flipped telemetry to on by default. It was not hidden; it was in the upstream release notes, buried among dozens of other changes and easy to skip.
The consequence: every deployment running the Immich ML container was reporting anonymous metrics outward. Not photos, not filenames, just runtime metrics. But the reason people install Immich is usually precisely that their photos stay on their own machine.

That gap is the real problem. Technically it is anonymous metrics. Emotionally it is “my server is sending things out”. For a self-hosted project whose selling point is privacy, the second one weighs far more.

The fix is one line, the reaction was not
The patch came from a first-time contributor (#32956). The release page shows 210 reactions on a one-change version, 85 of them hearts.

Nobody is celebrating a bug fix. They are responding to a project willing to say it plainly. The common failure in open source is not shipping telemetry; it is shipping telemetry quietly. The hard part is not writing the patch, it is putting the admission in the first paragraph.
Three checks I ran on my own containers
Dependencies changing defaults under you happens two or three times a year:
- Treat vendor defaults as untrusted input. When upgrading a dependency, read its changelog for
telemetry,analyticsandreport, not just your own diff. - Baseline your egress. Capture outbound connections for a week, or read your firewall logs, and write down the domains your stack normally talks to. The extra one is the only way you will ever notice. The first time I did this I found a domain I could not explain.
- Half the value of self-hosting is control. If your photo backup is sending something you cannot name, the difference between it and a cloud album is the server bill.
No summary needed
I saved this release note under a tag called “how to apologize”. Technical projects rarely get the chance to write an apology, and rarer still to write a good one. Four sentences: what happened, what is fixed, sorry, thank you. No “but”, no “to improve your experience”.
Worth learning from.

Comments
…