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.).
- -
cosignto verify the agent runtime signature on reinstall. - -
straceto 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 usingstrace.
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 0 | RC.RP-01 |
|---|---|
| NIST AI RMF | MANAGE 4.1 |
| OWASP AGENTIC | ASI05, ASI08 |
| OTHER | NIST SP 800-160 Vol. 1 |
Cite this cell:
https://agenticcovenants.com/recover/blast-radius/client-side/