Safeguard
Developer Tools•

What update history should an IoT device keep for its whole life?

Journals rotate, so keep a small separate install history on each device: what was installed, when, and any fallback. A field list and design notes.

Safeguard Security Team
4 min read

A device should keep a small, separate install history for its whole life, listing what was installed, when, from which source, and whether it fell back. System journals rotate and lose old entries, so a dedicated, size limited record is what lets you reconstruct a device's past in a support case or an investigation.

Why the journal is not enough

The RAUC documentation raises this directly. It says logs mostly go to stdout or the journal, which may be insufficient for keeping a long term history of what the updater changed on the system. A common problem is journal rotation: storage is limited, the journal holds a lot of other information, and it has to be rotated. The project notes you might want to preserve the history of installs, reboots, and fallbacks for a very long time, even the full life of the device. RAUC labels the details of its new log events as preview, so check current documentation before depending on them.

What to record

FieldExampleUse
TimeDevice clock plus a monotonic counterOrdering when the clock is wrong
EventInstalled, confirmed, fell back, rejectedThe story
From and to release4.1.0 to 4.2.1Inventory reconstruction
Image hashHash of the installed imageExact identity
SourceUpdate server or local mediaProvenance
Result and reasonSuccess or error codeDebugging
SlotA or BWhich copy runs

Keep each entry small. A few hundred bytes per event is plenty.

Design steps

  1. Put the history in a place that survives updates, such as a data partition.
  2. Make it append only from the updater, and not writable by ordinary applications.
  3. Cap its size with a rule that keeps the oldest and the newest entries, since both matter.
  4. Include the history in the check-in, or at least the latest entries and a running hash.
  5. Test power loss during a write so the file is never left unreadable.
  6. Document who may read it, because it can reveal when a device was off or moved.

Why a fleet owner cares

When a customer asks "was this unit ever on release 3.9", you can answer. When an advisory affects an old release, you can find devices that passed through it, which matters if a vulnerable component left behind data or credentials. It also supports reporting: time from release to install on each device is a fleet metric, and the data comes from here.

Safeguard stores SBOMs per release and keeps matching them to advisories, and the device history tells you which of your devices ran which release. Start with the free scan at gold.safeguard.sh/scan.

Privacy and size

A lifetime history is personal data in some products, because it can show when a device was in use or moved between owners. Keep it free of user content, limit who can read it, and say in your privacy notice what is stored. On the technical side, a trimmed, capped file is safer than an open ended log that can fill storage and block the next update.

Quick check

Is the system journal a good enough update history?

Usually not, because it rotates and mixes in unrelated entries. Keep a separate record.

How big should the history file be?

Small and capped. Keep both the oldest and newest entries when trimming.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.