Help
Troubleshooting & cleanup
Every issue below was actually hit and fixed while building this workshop — not hypothetical.
Troubleshooting
Not broken — it means setup already succeeded once for this attendee/session. Either
reuse the existing container (skip straight to ./verify.sh) or run
./cleanup.sh first for a clean container.
Transient — the installer script downloads a native binary payload after itself and checksums that separately; an occasional network blip mid-download trips it. Just re-run the same install command:
docker exec kali-tollbooth bash -c "curl -fsSL https://claude.ai/install.sh -o /tmp/install.sh && bash /tmp/install.sh"
Almost always a wrong working directory. Every command on the Setup page assumes you're
in casky-workshops/tollbooth/ — both sections start with a one-line sanity
check for exactly this reason:
# Section 1 (inside the Kali container)
docker exec kali-tollbooth test -f /root/tollbooth/verify.sh \
&& echo "[+] mount OK" || echo "[!] wrong directory — re-run from casky-workshops/tollbooth/"
# Section 2 (on the host, before copying evidence)
test -f lab-tollbooth.pcap && echo "[+] correct folder" || echo "[!] cd to casky-workshops/tollbooth first"
Almost certainly the quoted-value bug — see the Section 1
prerequisites on the Setup page. docker run --env-file does not strip quotes
from .env values the way docker-compose does, so a key copied
straight from casky-runner-phase1/.env ends up starting with a literal
" character. Re-run the sed fix from the Setup page and confirm
with the grep -c '^sk-ant-' check before retrying.
That's a casky-runner-phase1 issue, not a TollBooth/OpenDoor one — see that
repo's own README troubleshooting section (it covers stale exited-container/network-ID
conflicts and has a scripts/fix-stack.sh for it).
Cleanup
./cleanup.sh removes everything a run of this exercise creates outside the
tollbooth/ folder: the kali-tollbooth container (Section 1) and any
evidence files Section 2 copied into casky-runner-phase1/evidence/. Safe to
re-run — it reports what it found and skips what's already gone.
./cleanup.sh # container + copied evidence
./cleanup.sh --casky-runner-path ../../casky-runner-phase1 # if that repo isn't a sibling of this one
./cleanup.sh --with-image # also remove the kalilinux/kali-rolling image
It does not touch casky-runner-phase1's own containers
(casky-runner, casky-db, skill-lab, …) — those are the
persistent dev/workshop environment, not per-run litter — and it doesn't delete Postgres
investigation records from casky harness runs, since those are history, not
litter.
If lab-tollbooth.pcap/cloudtrail//opendoor/ get
modified mid-exercise, restore them separately with:
docker exec -w /root/tollbooth kali-tollbooth ./reset.sh
Do this between attendees on the same Kali container — takes under 10 seconds.
Authorized & lawful use only. All data is synthetic and self-contained; no live systems are touched.