One-page scope for APTWatcher's hackathon submission. What is in, what is out, how we know we are done, and how we measure whether we are any good.
In 2025, Anthropic's security team publicly disclosed the GTG-1002 campaign: a state-sponsored espionage operation that weaponized the Model Context Protocol and an agentic LLM to execute approximately 80–90% of the attack chain without human operator keystrokes. Recon, initial access, lateral movement, and data staging ran at machine speed. The traditional defender loop — a ticket, a human analyst, a 96-hour triage window — cannot match an adversary that completes its objective in minutes. The barrier to entry for machine-speed attacks has collapsed.
APTWatcher is explicitly designed for this threat class. It is not a faster
human; it is an AI-augmented defender that runs the same primitives the
attacker does — agentic orchestration, an MCP-backed tool surface,
iterative plan-execute-verify loops — but constrained by the Prime
Directive (strict read-only evidence mode) and tier gating (consent-required
state changes). See the tier gating model and the
forthcoming Prime Directive at CLAUDE.md. The design goal is parity of
speed, not parity of autonomy: the defender retains authority over chain
of custody and publication. See evidence-integrity.
Concrete implications for scope. APTWatcher assumes (a) the adversary toolchain can saturate a network in under an hour, (b) queue-based triage will miss the window, (c) the defender must produce a signed, auditable finding in single-digit minutes to be tactically useful, and (d) output must survive review by analysts and judges who did not witness the agent's execution — see ACCURACY.md. Mission statement reformulated: produce a signed, court-admissible triage bundle from a cold E01 and memory dump within a 14.5-minute wall-clock budget.
Three deployment modes, one brain.
Mode A (Direct Agent Extension on Claude Code), Mode B (Custom MCP Server
callable from any MCP client), Mode C (Hybrid — recommended). All three
import from src/core/. See
deployment modes.
Five-tier capability model. Tier 0 always-on (core forensic triage). Tiers 1–4 opt-in via config and, for Tier 3/4, additional runtime flags and confirmations. See tier model.
Three scenarios, two dataset strategies. S01 (single Windows compromise), S02 (multi-host lateral movement), S03 (ransomware pre-detonation). Synthetic datasets with deterministic rubrics, plus public-dataset overlays where license allows. See scenarios and datasets.
Four integrations as optional capabilities, none vendored: APT Watch and MS Threat Analytics for Tier 1 intel; GLPI for Tier 2 workflow; cnc_disruptor for Tier 3/4 containment.
Tier 1 intel aggregator. A clean-room provider layer fans IOC lookups
out across ten sources — APT Watch (curated attribution) plus nine OSINT
providers (DShield, Shodan InternetDB, FireHOL, IPsum, Steven Black,
VirusTotal, AbuseIPDB, AlienVault OTX, Censys) — and folds them into one
IOCVerdict. Keyless providers need no secret; keyed providers activate
only when their API-key env var is set. Surfaced as intel_lookup,
enrich_*, feed_*, and admin_* MCP tools. See the
MCP tools reference.
Five use-case profiles reading the SIFT tool inventory: Windows host triage, Linux host triage, memory-only, timeline-only, network-artifact.
Self-correction as an architectural gate. Report emission is blocked until a self-correction pass has executed against the draft findings. See self-correction.
Evidence integrity as a first-class property. Every MCP tool declares its spoliation risk. Containment actions write pre/post state hashes to the audit log. See evidence integrity.
All 8 hackathon deliverables. Code repo (MIT), demo video ≤5 min, architecture diagram, Devpost description, dataset documentation, accuracy report, try-it-out instructions, agent execution logs.
submit_ioc()feedback loop to APT Watch. Deferred to post-MVP backlog. The shape is designed; the implementation waits.- Tier 4 offensive containment is documented and gated, but stays off for the demo. The capability proves the tier model's extensibility; it is not a recommended feature.
- Cloud audit log analysis (M365, Azure AD sign-in logs). A separate profile in a later release.
- Full container forensics. Surfaced but not layer-by-layer analyzed.
- Kubernetes cluster-level evidence (audit logs, etcd state).
- eBPF rootkit detection. Flagged when relevant; detection requires kernel tooling beyond what SIFT ships.
- Training data / fine-tuning. APTWatcher is prompts + tools + a base model. Datasets are evaluation surface, not training input.
- Content from
~/Dev/docs. Hard OUT OF SCOPE per clean-room policy. Seeknowledge/README.md.
| Decision | Choice |
|---|---|
| License | MIT (hackathon requirement) |
| Name | APTWatcher |
| Primary Tier 1 provider in demo | Both APT Watch and MS Threat Analytics, configurable |
| Credential management | Environment variables; secrets file not supported |
| Runtime — Mode A | Claude Code (primary). OpenClaw compatibility is a bonus |
| Runtime — Mode B | Any MCP-capable client. Python runner ships for smoke tests |
| Runtime — Mode C | Claude Code + MCP server, both speaking the same src/core/ |
| Logging format | JSONL, append-only, one file per incident |
| Self-correction gate | Architectural (report emitter refuses without the event) |
| Synthetic shellcode policy (S03) | Sentinel pattern APTWATCHER_SYN_ prefix, YARA-matching |
| Tier 4 for hackathon demo | Off |
submit_ioc() MVP or backlog |
Backlog |
- Which public datasets get adopted. Pending license verification on candidate public IR case archives and Magnet Weekly CTF images. Finalized in Phase 4.
- GitHub repo creation timing. Repo is reserved; creation happens when author is ready to push the first commit.
A successful triage run produces a report where:
- Every finding cites at least one tool call in the audit log.
- Every finding maps to a MITRE technique ID; mapping is correct per the scenario rubric.
- Findings are phrased as "consistent with..." when the evidence is circumstantial and as "confirmed by..." only when the cited evidence directly supports the claim.
- The self-correction event exists in the audit log for the current incident.
- No claim is present that contradicts evidence visible in the cited tool outputs.
- Where a required artifact class is missing, the report states the gap explicitly and caps any dependent finding's confidence accordingly.
A run that meets 1–6 passes even if it misses some rubric items. A run that fails any of 1, 4, or 5 fails regardless of rubric coverage.
Reported in docs/ACCURACY.md per scenario per dataset
version:
- Rubric hit rate — fraction of
required: truefindings surfaced with the correct MITRE mapping. - Rubric near-miss rate — findings surfaced with wrong-subtechnique mapping (e.g., T1003 vs. T1003.001).
- Hallucination count — claims in the report that are not supported
by cited tool output, or that hit a
hallucination_trapdeclared in the rubric. Target: zero per run. - Self-correction effectiveness — ratio of findings rewritten or dropped by the self-correction pass over total draft findings. A healthy band is 0.05–0.25; outside that, investigate.
- Time to triage — wall-clock from preflight start to report emit. Tracked for trends, not gated.
- Tier-0-only parity — hit rate delta between Tier 0 alone and Tier 0 plus available tiers. Shows how much value the optional tiers add.
Synthetic and public datasets are scored separately; the numbers never blend.
Phase 3 (implementation) through Phase 4 (accuracy testing) has roughly 6 weeks to the June 15 deadline. Hard gates:
- End of May 2026: all Phase 3 items complete; first accuracy run on synthetic datasets.
- First week of June 2026: Phase 4 complete; final docs pass; demo video recorded.
- June 10 2026 latest: Devpost draft submitted (allows buffer for Devpost-side issues).
- June 15 2026: submission deadline. No code changes after this date.
- README — entry point
- CLAUDE.md — orchestrator brain file (Prime Directive, tool paths, subdomain roles)
- SUBMISSION-CHECKLIST — final pre-submit gate