Agentic Covenants

Recover (RC) · Blast radius

Blast radius at the client side layer

deterministic · Outside the model's reasoning

How do I get back to a known-good state and not repeat this?

What this cell does

Rebuild operator host from known-good image if untrusted, reinstall agent runtime with signature verification, re-derive sandbox profiles.

Artifacts (1)

agent-restore-host-localview on GitHub
#!/usr/bin/env bash
# ABOUTME: Local blast-radius rebuild runbook. Reinstall agent runtime with signature check, restore bubblewrap launcher and Seatbelt profile.
# ABOUTME: Operator host reimage is out of scope; this runs after reimage if you chose to reimage.

set -euo pipefail

if [[ $# -lt 2 ]]; then
  echo "Usage: agent-restore-host-local <AGENT_NAME> <INCIDENT_ID>" >&2
  exit 64
fi

AGENT_NAME="$1"
INCIDENT_ID="$2"
SOURCE_DIR="${SOURCE_DIR:-$(pwd)/controls/blast-radius/client-side}"
RUNTIME_URL="${RUNTIME_URL:-}"
RUNTIME_SIG_URL="${RUNTIME_SIG_URL:-}"

# 1. Reinstall agent runtime from a verified source. Skips if URLs not set
# (operator may install via package manager instead).
if [[ -n "$RUNTIME_URL" && -n "$RUNTIME_SIG_URL" ]]; then
  TMP_DIR="$(mktemp -d)"
  curl -sSL -o "$TMP_DIR/claude" "$RUNTIME_URL"
  curl -sSL -o "$TMP_DIR/claude.sig" "$RUNTIME_SIG_URL"

  if command -v cosign >/dev/null 2>&1; then
    if cosign verify-blob \
         --signature "$TMP_DIR/claude.sig" \
         --certificate-identity-regexp ".*" \
         "$TMP_DIR/claude" >/dev/null 2>&1; then
      install -m 0755 "$TMP_DIR/claude" /usr/local/bin/claude
    else
      echo "REFUSING: cosign signature verification failed for $RUNTIME_URL" >&2
      rm -rf "$TMP_DIR"
      exit 1
    fi
  else
    echo "WARN: cosign not installed; runtime installed without signature verification" >&2
    install -m 0755 "$TMP_DIR/claude" /usr/local/bin/claude
  fi

  rm -rf "$TMP_DIR"
fi

# 2. Restore bubblewrap launcher from source.
if [[ -r "$SOURCE_DIR/agent-bwrap" ]]; then
  install -m 0755 "$SOURCE_DIR/agent-bwrap" /usr/local/bin/agent-bwrap
fi

# 3. Restore Seatbelt profile (macOS) and seccomp profile (Linux) from source.
if [[ -r "$SOURCE_DIR/claude.sb" ]]; then
  install -m 0644 "$SOURCE_DIR/claude.sb" /etc/agents/claude.sb
fi
if [[ -r "$SOURCE_DIR/seccomp-claude.json" ]]; then
  install -m 0644 "$SOURCE_DIR/seccomp-claude.json" /etc/agents/seccomp-claude.json
fi

logger -t agent-recovery -p user.notice \
  "$(jq -n \
      --arg event "blast_radius_restored_local" \
      --arg agent "$AGENT_NAME" \
      --arg incident "$INCIDENT_ID" \
      --arg actor "$(whoami)" \
      --arg ts "$(date -Iseconds)" \
      '{event:$event, agent:$agent, incident:$incident, actor:$actor, ts:$ts}')"

echo "Local blast-radius restore complete for $AGENT_NAME"
echo "Re-derive seccomp allowlist against rebuilt workload (strace -c) before declaring recovery complete."

Cell notes

Restorations, Blast radius / Client-side

Precondition. Interventions L2-C3 has fired (process tree killed, sandbox torn down). Identity and Authorization restorations rows complete. If the operator host itself is suspect, reimage from a known-good base before running this script.

Authority. On-call.

Tooling

  • - A known-good base image for the operator host (a hardware refresh image, an AMI, a Vagrant box, etc.).
  • - cosign to verify the agent runtime signature on reinstall.
  • - strace to re-derive seccomp allowlists against the rebuilt workload.

Files in this directory

  • - agent-restore-host-local, runbook script. Reinstalls the agent runtime from a verified source with cosign signature check, reapplies the bubblewrap launcher and Seatbelt profile from source, optionally re-derives the seccomp allowlist using strace.

Verification


# 1. Agent runtime signature verifies
cosign verify-blob --signature /usr/local/bin/claude.sig /usr/local/bin/claude

# 2. Bubblewrap launcher in place
ls -la /usr/local/bin/agent-bwrap

# 3. Seccomp profile loaded at next launch
sudo -u agent-runner /usr/local/bin/agent-bwrap /tmp -- /bin/sh -c 'unshare -n echo test' 2>&1 \
  | grep -i "operation not permitted" || echo "FAIL: seccomp not enforcing"

Common failure modes

  • - Hardware-level compromise (firmware, BIOS) survives reimage. Hardware replacement may be required for top-tier compromises.
  • - Sandbox profile re-derived against a still-compromised workload, the new profile inherits the malicious syscall pattern. Derive against a clean baseline only.

Citation

NIST CSF 2.0 RC.RP-01. NIST AI RMF MANAGE 4.1. OWASP ASI05, ASI08. NIST SP 800-160 Vol. 1.

Primary failure modes

Documented, not hypothetical. A control whose bypass is undocumented is worse than no control, because somebody trusted it.

  • host firmware/BIOS-level compromise survives reimage
  • sandbox profile derived against compromised workload (still has malicious syscalls allowed)

Crosswalk

NIST CSF 2 0RC.RP-01
NIST AI RMFMANAGE 4.1
OWASP AGENTICASI05, ASI08
OTHERNIST SP 800-160 Vol. 1