TRANSPARENCY · WARRANT CANARY

No secret
compulsion received.

At regular intervals the operator signs a statement that it has not received a gag order, secret subpoena, backdoor demand, key-disclosure order or seizure. If the statement stops appearing, or an assertion flips, that silence is itself the warning.

LATEST CANARY

Loading the latest canary…

Source: GET /api/canary/latest — verify the signature yourself with the CLI below.

WHAT IT IS

What is a warrant canary?

A warrant canary is a signed statement that an operator has NOT received a certain kind of secret legal order. Many jurisdictions can compel a provider to hand over data or install a backdoor and, at the same time, forbid it from telling anyone. The operator cannot legally say “we were served” — but it can stop repeating “we were not served.”

So the operator publishes a fresh, signed statement on a schedule. As long as it keeps appearing on time with every assertion intact, readers infer that none of those secret compulsions has happened. If it disappears, or an assertion changes from true to false, the reader reads that change as the signal the operator is barred from stating directly.

WHY IT MATTERS

Who relies on this

Journalists & sources

A reporter needs to know whether the platform protecting a source has been quietly compelled to expose it. A canary that stops renewing is a reason to change tools before a source is burned.

Activists & defenders

Human-rights defenders operate where a secret seizure or key-disclosure order can be fatal. The canary turns an invisible legal event into an observable one they can act on.

Everyone, verifiable

The signature is post-quantum (ML-DSA-87) and the statements are hash-chained, so no one — not even the operator — can rewrite history or backdate a “clean” statement without breaking the chain.

THE SIX ASSERTIONS

What each statement swears

Every canary carries the same six assertions in a fixed order. “Holds” means that kind of secret compulsion has NOT been received. If any single one flips to false, the canary is TRIPPED.

No gag order01
no_gag_order

No confidentiality or gag order has been received that would forbid disclosing a legal demand.

No secret subpoena02
no_secret_subpoena

No secret court subpoena or national-security letter has been received.

No backdoor request03
no_backdoor_request

No request to add a backdoor to the software or hardware has been received.

No compelled key disclosure04
no_key_disclosure_compelled

No order compelling disclosure of signing or encryption keys has been received.

No seizure05
no_seizure

No server, device or infrastructure has been seized.

Keys uncompromised06
keys_uncompromised

The signing keys have not been compromised; their integrity is intact.

THE TWO SIGNALS

How to read a change

Not renewed in timeEXPIRED

Each statement carries a deadline (next_due_by). If the clock passes that deadline and no new signed statement appears, the canary is EXPIRED. Treat it as a signal — an operator under a gag order may simply go quiet rather than lie.

An assertion fellTRIPPED

If a later statement is still validly signed but one of the six assertions has flipped to false, the canary is TRIPPED. Because the signature is valid, this is the operator's own deliberate statement that the corresponding secret compulsion has now occurred.

INDEPENDENT VERIFICATION

Verify it yourself

You do not have to trust the operator or this page. Fetch the signed bundle and check it with the open-source lydos-warrant-canary CLI on your own machine, with your own clock.

Inspect the statement

Run inspect with your own current time in milliseconds. The tool reports HEALTHY, EXPIRED or TRIPPED — structure, freshness and assertions are all checked against the clock you supply, not a hidden one.

your terminallydos-warrant-canary inspect --bundle canary.bundle --now-ms 1749200000000
# STATUS: HEALTHY — all claims hold, statement is fresh.
# STATUS: EXPIRED — overdue by <n> ms. Treat as a SIGNAL, not routine.
# STATUS: TRIPPED — the following assertions no longer hold:
#         - no_gag_order

Recompute the hash & read the JSON

canonical recomputes the statement hash that links the chain; json prints the public view of every field for your own tooling.

your terminal# recompute the canonical statement hash and inspect the public JSON view:
lydos-warrant-canary canonical --bundle canary.bundle
lydos-warrant-canary json      --bundle canary.bundle

Verify the post-quantum signature

The final layer of trust is the signature itself, verified against the operator's published signing key.

The ML-DSA-87 signature is verified separately
The host CLI checks structure, freshness and trips, but it does NOT cryptographically verify the ML-DSA-87 signature — that requires the KSL HAL / liboqs. For full trust, verify the signature against the published signer key on a device that carries the post-quantum verifier. The CLI states this limitation in its own output.