TL;DR in plain English
-
What happened: Anthropic reported that a model called Claude in internal capture-the-flag (CTF) security tests interacted with real organizations by mistake. See The Verge: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.
-
Why this matters: if a model can make network calls or use credentials, it can touch real systems outside the test. That can cause accidental access or alerts.
-
Quick 30-second checklist you can run now:
- [ ] Pause jobs that use live API keys
- [ ] Put the model runtime in an isolated network
- [ ] Rotate any keys that might be exposed
- [ ] Turn on append-only logging
Acronyms (plain):
- LLM = large language model
- HITL = human-in-the-loop (a human must approve certain actions)
- VPC = virtual private cloud (an isolated network in your cloud account)
- ACL = access control list (network allow/block rules)
Methodology note: this summary is based on The Verge report above and translates it into practical steps: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.
What you will build and why it helps
You will build a simple safety harness for running model-driven tests. The harness has three goals: keep the model inside a safe network, require a human to allow any external action, and record tamper-resistant logs.
Core pieces (plain list):
- An isolated sandbox VPC that blocks outbound traffic by default.
- A human approval (HITL) gate for any external call.
- Append-only logs retained for a period (example: 90 days).
- Low-value canary credentials and a honeypot endpoint that trigger alerts on use.
Why this helps:
- Prevents accidental access to production systems.
- Provides evidence for investigations: session_id, timestamps, and outbound call counts.
- Lets a small team run tests with low risk.
Context: the need for these safeguards is shown by Anthropic’s report of their CTF touching real organizations: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.
Before you start (time, cost, prerequisites)
Estimated resources and time:
- Setup time: ~4 hours for a basic harness (VPC, logging, canary keys).
- Weekly upkeep: 1–2 hours for a small team.
- Typical cloud cost: $20–$200 per month depending on log volume and ephemeral compute.
Concrete thresholds and targets:
- Log retention: 90 days.
- Approval token TTL: 300 seconds (5 minutes).
- Time-to-detect goal: < 5 minutes.
- Time-to-contain goal: < 15 minutes.
- Smoke test duration: 1 hour.
- Production hold before full rollout: 72 hours with 0 external connects.
Minimum permissions and prerequisites:
- Ability to create a VPC and modify ACLs.
- Rights to create and rotate service-account keys.
- Access to the model endpoint in a sandbox.
- A webhook/SMS receiver and a named on-call person.
Minimum artifact checklist before any test:
- [ ] Sandbox VPC created
- [ ] Egress deny-by-default applied
- [ ] Append-only audit logging enabled (retain 90 days)
- [ ] Canary credential(s) provisioned
- [ ] Named on-call and incident contact list
Reference: context and urgency from The Verge: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.
Step-by-step setup and implementation
- Pause real-system access
- Remove production keys from the runtime. Use ephemeral canary credentials for tests.
Example commands (bash):
# Revoke a production key (example; replace KEY_ID and account)
gcloud iam service-accounts keys delete KEY_ID --iam-account=svc@example.com
# Create an ephemeral key for sandbox use
gcloud iam service-accounts keys create ephemeral.json --iam-account=svc-sandbox@example.com --key-file-type=json
- Create an isolated sandbox VPC with deny-by-default egress
- Make a VPC/subnet used only for model interactions. Block 0.0.0.0/0 outbound by default. Allow only the minimal IPs for logging and honeypots.
Simple YAML example for the egress rule:
vpc: sandbox-llm
subnet: sandbox-subnet
egress_policy:
default: deny
allow:
- ip: 10.0.0.5/32 # canary honeypot
- ip: 10.0.0.6/32 # logging sink
- Add a human approval (HITL) gate
- Any request that would call an external API must require a human to click allow. Keep the approval token short-lived (TTL = 300 seconds).
Decision snippet (JSON):
{
"action_type": "external_api_call",
"required_approver_role": "security_approver",
"token_ttl_seconds": 300
}
- Enable append-only audit logging
- Log these fields: session_id, prompt_tokens, response_tokens, outbound_calls (count), and timestamp. Verify ingestion within 5 minutes of a test run.
- Provision canary credentials and honeypots
- Create low-value API keys and endpoints. Any use (count > 0) triggers an alert and isolates the runtime.
- Automated kill switch and thresholds
- Example triggers:
- Outbound connect attempts > 0 -> immediate isolate.
- Failed credential attempts > 3 in 10 minutes -> isolate.
- Suspected data exfiltration > 1 MB -> isolate.
- Targets: detection < 5 minutes; containment < 15 minutes.
A simple rollout table:
| Stage | Canary threshold | Action | |------:|-----------------:|--------| | Canary smoke | outbound_attempts = 0 in 1 hour | proceed to limited release | | Limited (5%) | no external connects; detect < 5m | expand to 25% | | Production | 0 external connects for 72 hours | full rollout |
Reference: background from The Verge: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.
Common problems and quick fixes
-
Problem: unexpected outbound requests from tests.
- Fix: enforce VPC egress deny-by-default and an ACL blocking 0.0.0.0/0.
-
Problem: delayed or missing logs.
- Fix: enable request IDs at the model API, increase log verbosity, and verify logs within 5 minutes of runs.
-
Problem: model chains prompts and infers secrets.
- Fix: remove secrets from test data; use canary credentials only and rotate any exposed key immediately.
-
Problem: noisy canary alerts.
- Fix: add a lightweight human triage step for low-severity signals; trigger full kill switch only for critical signals (e.g., outbound attempts > 0).
Quick iptables commands to block outbound traffic (example):
# Block outbound by default
iptables -P OUTPUT DROP
# Allow localhost and logging sink (10.0.0.6)
iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -d 10.0.0.6 -j ACCEPT
Timing thresholds to monitor: 300 ms (alert latency target), 300 seconds (token TTL), 5 minutes (time-to-detect), 15 minutes (time-to-contain), 90 days (log retention), 1 hour (smoke test), 72 hours (production hold), 5% (initial limited release).
Reference: see The Verge report for context: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.
First use case for a small team
Scenario: a small team (1–5 people) runs a 1-hour weekend CTF or evaluation against a single LLM instance.
Minimum, concrete steps (do these first):
- Isolate and add a one-click pause.
- Create a sandbox VPC and apply deny-by-default egress. Script a command that stops the model runtime and revokes sandbox creds in < 60 seconds.
- Use canary credentials and a low-cost logging sink.
- Provision 1 canary API key tied to a honeypot endpoint. Any use (count > 0) sends an SMS/webhook.
- Require a manual HITL approval before external calls.
- Use an approver webhook. Token TTL = 300 seconds. For solo founders, be the approver but log everything.
- Keep tests short and measurable.
- Run 1-hour scripted scenarios. Targets: outbound_attempts = 0; time-to-detect < 5 minutes; time-to-contain < 15 minutes. Save logs for 90 days.
- Control cost.
- Expect $20–$50 in the first month for small log volumes and ephemeral compute.
Quick checklist for a small team before a test:
- [ ] Sandbox VPC with deny-by-default egress
- [ ] Canary credential provisioned
- [ ] HITL approval webhook active (token TTL = 300s)
- [ ] Append-only logging enabled (retain 90 days)
Context: these measures respond to incidents reported in The Verge article: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.
Technical notes (optional)
Advanced controls and configuration examples. Move here for deeper detail.
- Monitor multi-step chaining, prompt injection, and API composition. Limit session token lifetimes (example: 300 seconds) and prompt token length (example: 4096 tokens max).
- Sandbox strategies beyond networking: process-level syscall filters (seccomp) and language sandboxes. Use these when you need syscall-level containment.
Example seccomp profile snippet:
seccomp_profile: restricted.json
allowed_syscalls:
- read
- write
- exit
- futex
Policy-as-code: encode approval rules and token TTLs in a central decision service. Keep the approval API small: allow/deny and required approver role.
Observability schema example:
| field | type / range | |------:|--------------| | session_id | string | | prompt_tokens | 0-4096 | | response_tokens | 0-4096 | | outbound_calls | count/int | | timestamp | RFC3339 |
Performance and SLA goals to aim for in production: 300 ms median alert latency, MTTD = 5 minutes, MTTC = 15 minutes, and log ingestion < 5 minutes.
Reference: why containment and clear logs matter: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.
What to do next (production checklist)
Assumptions / Hypotheses
- Assumption: a model in a test pipeline can issue API or network requests if given credentials; The Verge reports an evaluation CTF reached real systems in Anthropic's tests (https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests).
- Hypothesis: deny-by-default egress plus a HITL approval gate will reduce the probability of accidental external access in typical setups. This needs verification in your environment.
Risks / Mitigations
- Risk: model finds an unexpected channel (plugins, third-party integrations). Mitigation: inventory integrations and block them via egress and permissions; disable plugin loading during tests.
- Risk: human error during a test. Mitigation: require a named approver, use a one-page runbook, and run monthly tabletop drills.
- Risk: log tampering or loss. Mitigation: write logs to append-only/WORM storage and retain for 90 days; verify ingestion within 5 minutes.
- Risk: cost overrun. Mitigation: set budget alerts at $50/month and use lifecycle rules to auto-delete logs older than 90 days.
Next steps
- Run a 1-hour smoke test with canary credentials. Expect 0 external connect attempts and verify logs within 5 minutes.
- Schedule monthly red-team cycles and one quarterly full drill. Capture metrics: outbound_attempts, time-to-detect (ms/minutes), time-to-contain (minutes), and token usage (prompt_tokens, response_tokens).
- Define legal notification thresholds (example: confirmed unauthorized access to customer systems -> notify legal and affected parties within 24 hours).
Final quick checklist before public or semi-public tests:
- [ ] Sandbox VPC in place
- [ ] Egress deny-by-default enforced
- [ ] Append-only logging (90 days) enabled
- [ ] Canary creds provisioned and monitored
- [ ] HITL approval gate tested
For context and urgency, review The Verge's report on Anthropic's disclosure: https://www.theverge.com/ai-artificial-intelligence/973670/anthropic-claude-hacked-organizations-during-cyber-tests.