Skip to the content
TEND is in beta.Limitations

TEND / Threat model

What TEND defends against

The trust boundary, what it stops, what it doesn’t, and what it assumes.

The trust boundary

Agent process

Untrusted. Holds only its TEND key.

agent key

TEND server

Trusted. Decides, records, holds gateway credentials.

credential

Tool APIs

Trusted to honour idempotency keys.

session

Operator browser

Approves. Never sees tokens or credentials.

TrustedUntrusted

What it stops

  • A changed request after approval

    Approvals are bound to the exact agent, tool, action, resource and detail; any difference is refused.
  • Replays and double delivery

    An approval is spent in one atomic update; of concurrent attempts, one runs.
  • Another agent’s approval

    Approvals are scoped per agent; another agent’s look like they don’t exist.
  • TEND down or erroring

    The call is refused before the tool runs. There is no break-glass path.
  • An agent calling the tool directly (gateway mode)

    The credential lives only with TEND, so the agent has nothing to call with.
  • Silent edits to the record

    The hash chain shows a changed, removed or inserted entry.
  • Text that displays differently

    Control, zero-width and bidi-override characters in an approval are refused.

What it doesn’t stop

  • Agents that skip the checkpoint

    In checkpoint mode TEND is cooperative; an agent holding real credentials can act without it.
  • Whoever controls TEND

    Someone who can write to its database can rewrite history; keep the head hash elsewhere.
  • Processes on the same machine

    TEND is not an isolation boundary on your computer.
  • A fooled or tired approver

    An approval is only as good as the text a person read.
  • Meaning

    No prompt-injection detection, content scanning or rules over sequences of calls.
  • A stolen agent key

    It can request approvals and, under an Allow rule, run tools.

What it assumes

  • In gateway mode, the credential is gone from everywhere the agent can reach, and the target accepts it only from TEND.
  • You run the TEND server and its database, and trust both.
  • Operators are trusted: one shared role, no two-person rule yet.
  • Upstream tools honour idempotency keys, so a retry can’t run twice.
  • Resources use canonical names; aliases are normalised before asking.

Found a way around it? Tell us.