Documentation menu
On this page

Threat model

WardenClaw has one job: a risky command of an AI agent runs only after a person signs it on a device the agent can’t reach. This page lists what that rests on, who can attack it and what stops them. The main adversary, a model that wants to turn its guard off, has its own page with every vector and its test: Why the model can’t turn it off.

What it protects

Trust boundaries

What leaves the machine

What Goes to When What it carries
The cards and decisions The relay (relay_url) On every card and every decision Ciphertext and routing data: supervisor id, device id, message id, kind, expiry, size and time. No command, path or host
A push Apple (APNs) or Google (FCM), sent by the relay When a card goes to a device with no live connection to the relay A fixed text and the same ciphertext and routing data
The judge’s prompt The provider of the model at the URL you set Only with a judge at a URL Every command it rates: arguments, listed environment variables, working directory, host, process chain

The app’s journal stays out of the phone’s cloud backup: on Android the app’s backup is off, on iPhone the journal’s folder is excluded from the iCloud backup.

Adversaries

Adversary Can Can’t Checked by
A hijacked model or agent (prompt injection, a malicious dependency) Run what trips no rule; ask for a card Run a risky command without your signature, sign for you, swap the command after approval, turn wardend off in the hardened install redteam/run.sh, redteam/hardened-check.sh, the vector table
The agent’s user in a single-user trial Stop, trace or rewrite wardend without a single exec Nothing stops it: use the hardened install redteam/run.sh shows these attacks succeed
Someone on the way to the phone (the relay, a proxy, the network) Delay or drop messages; see who talks to whom and when Read a card, forge a card or a decision, replay a ticket. A decision that never arrives ends in EPERM when the TTL runs out protocol/vectors/relay_vectors.json, the relay tests of wardend and of relay/
A thief with your phone On an unlocked phone, allow cards that are not dangerous (the default owner check covers dangerous cards and roots) Allow a dangerous card without your biometrics or device code (on a phone with a screen lock); sign anything after wardend pair revoke the app’s owner check (app/src/core/safety.ts)
A judge that lies (Autopilot) Allow what it rates below your threshold while Autopilot is on Allow what is on the block-list; stay on for more than an hour the app’s judge (app/src/core/decide.ts, controller.ts)
A tampered install script or release Get you to run it Control of the GitHub releases or of this site: releases are not signed Install wardend

What is not closed

The list of what WardenClaw doesn’t close yet lives in one place, on the home page: What it closes, and what it doesn’t yet. The premises of the hardened install and what stays out of scope: Honest premises. The race between approval and exec, measured: TOCTOU.