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!

The v3.3.6 release note: one apology, one fix

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.

The Immich site: self-hosted photo and video backup

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 Immich quick start: 6GB of RAM and Docker

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.

The Immich release list: 3.4.0 release candidates are already queued

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:

  1. Treat vendor defaults as untrusted input. When upgrading a dependency, read its changelog for telemetry, analytics and report, not just your own diff.
  2. 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.
  3. 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.

← Back to all posts

Comments

…