CTF team

Work a capture-the-flag event as a team of agents: one named agent per challenge, grouped by category, each writing a writeup as it goes. You decide where to spend attention.

warning

Only attack targets in the CTF's scope, as defined by its rules. Put the scope — hostnames, IP ranges, and what's off-limits — in every prompt.

One workspace per event

beswarm workspace add --name ctf --path ~/ctf/2026-autumn

Keep challenge files in challenges/<name>/ and have every agent write to reports/<name>.md, so writeups show up in the Artifacts tab as they're written.

One agent per challenge, grouped by category

beswarm agent start --name web-login --agent claude --group web \
  --prompt "CTF challenge 'login' (web), files in challenges/web-login/. Scope: only http://login.ctf.example:8080, nothing else. Find the flag. Keep a running writeup in reports/web-login.md: what you tried, what worked, and the flag."
beswarm agent start --name crypto-rsa --agent codex --group crypto \
  --prompt "CTF challenge 'tiny-e' (crypto), files in challenges/crypto-rsa/. Offline only. Find the flag. Keep a running writeup in reports/crypto-rsa.md."
beswarm agent start --name rev-crackme --agent gemini --group rev \
  --prompt "CTF challenge 'crackme' (reversing), files in challenges/rev-crackme/. Static analysis first. Find the flag. Keep a running writeup in reports/rev-crackme.md."

Groups let you stop a category at once when you change strategy: beswarm agent close --group crypto.

Run the board

beswarm agent list
  • done agents may have a flag. Read their writeups and submit.
  • blocked agents want permission to run something. Check it's in scope before you agree.
  • Agents stuck for a long time: read their screen, give them a hint, or stop them and move the effort elsewhere.
beswarm agent read --name web-login --source recent-unwrapped --lines 60
beswarm agent prompt --name web-login --prompt "Hint: look at how the session cookie is signed."

After the event

Ask one agent to tidy the writeups into one document for the team:

beswarm agent start --name writeups --agent claude --group ctf \
  --prompt "Merge reports/*.md into reports/writeups.md, one section per challenge: category, approach, key insight, flag. Drop dead ends unless they teach something." \
  --wait --timeout 1200