Agent releases are built and signed on a release machine, with a key that lives in its Secure Enclave and signs only with a fingerprint touch. It cannot be copied off that machine, and no odoobot server has it. An offline backup key, kept behind a passphrase, exists for the day that machine is lost.
The agent (0.4.80 and later) installs an update only if its release manifest carries a valid signature from one of those two keys, and only if the binary matches the checksum inside that signed manifest. It never moves to an older version, and an update never interrupts a command in progress. So even if odoobot's own servers were compromised, they could not push an update we did not sign to a machine already running the agent.
The installer checks the same signature before it installs anything. A first install necessarily trusts the installer it downloads, so if you want to be certain, read it first (see below) and check that the keys it embeds have these fingerprints:
SHA256:m5FaX8h9NyK0dgTed+t8MOhG5HHmJ6ujcP8ZACENT1k release key (Secure Enclave, Touch ID)
SHA256:D4IWf9TplpuKPPEagRisk0sOWZSVzx2AdKaOuzm6O5o offline backup key