Safeguard
Supply Chain•

VEX document versions and timestamps: the rules authors must follow

How VEX document and statement versions, first issued and last updated timestamps must relate, so consumers can trust change tracking in a VEX feed.

Safeguard Security Team
3 min read

In VEX, version numbers and timestamps are how consumers detect change. The rules are simple: any content change bumps the document version, a changed statement bumps its own version, and the document's last updated time can never be older than its newest statement. Break these and automated consumers miss updates.

Why this matters

CISA notes that it does not specify how or when to exchange VEX information. Timestamps and versions are intended to support change notification and tracking. So every consumer that polls a feed relies on them. If an author edits a status without bumping a version, a downstream tool that compares versions will see no change.

Document level rules

From CISA's minimum requirements:

  • A document must include one document version, and it must be incremented when any content changes, including content inside statements.
  • The version must clearly convey positive incremental change.
  • A document must record when it was first issued, and that time must equal the oldest first issued time of its statements.
  • The last updated time must initially equal first issued, and must be equal to or newer than the most recent statement update.

Statement level rules

  • Each statement must have a version that increments when its content changes.
  • Each statement must record first issued and last updated times.
  • The statement's last updated time starts equal to first issued.

Statement versions may be derived from or related to the document version, but they are tracked separately. If document metadata such as tooling or author role changes, the document version and time move forward while statements stay as they were.

What OpenVEX adds

OpenVEX requires a document timestamp and version, and treats the statement version as an optional integer that defaults to zero and must be present once incremented. Timestamps inherit downward: a statement timestamp overrides the document timestamp. When you update a document, statements you did not touch must keep their original data, and if the document timestamp changes, those statements should carry their original timestamp explicitly.

All time values should follow common standards. CISA names RFC 3339 as an example.

A worked update

You publish a document at version 1 with three statements. A week later one statement moves from under_investigation to fixed.

  1. Document version becomes 2.
  2. The changed statement's version increments, and its last updated time is now.
  3. The two other statements keep their old versions and times.
  4. The document's last updated time equals the changed statement's time.

Consumer tip

Store the last version you processed. On each fetch, if the version is higher, diff the statements and look only at those with a newer last updated time.

Quick check

Do I bump the version if I only fix a typo in a note?

Yes. CISA says the document version must increment when any content changes.

Should I reset first issued when I republish?

No. First issued records when the statement first appeared and should stay put.

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.