--since), it lands on the capability graph instead, so the “what could happen” picture is in front of you rather than an empty timeline.
Views
Timeline. Every event in the window, per session (a session is Claude Code’s session id, or a 30-minute idle gap for clients without one):TOOL, CONTENT (a read that brings content into the context), NETWORK, RESOURCE, ERROR. The detail column shows the path or URL argument; content-bearing arguments are never displayed.
Provenance. Each HIGH or CRITICAL call that closely followed an ingestion event, as a chain: external content → fetch → agent → filesystem.read_file. Clicking it shows the evidence:
aspex trace killchain, each step OBSERVED, the ordering INFERRED, the harm POSSIBLE.
Capability graph. External content → agent → servers → sensitive resources and destinations. Edges exercised in the window are green; edges on a critical or high attack path are red. What is configured versus what was used, on one picture, kept small on purpose (one node per server, resource kind, destination).
Findings. Each flagged event answers: why does Aspex believe this, what evidence exists, which parts are observed, which inferred, what is not observed, and what to do.
Local only
The server binds127.0.0.1 and nothing else; there is no flag to change that, and it refuses requests whose Host header is not loopback. The page is one embedded HTML file that loads one JSON document from the local process; there are no external scripts, fonts or telemetry, and a Content Security Policy forbids them. The process is ephemeral: the dataset is computed once at startup, and Ctrl-C ends it. Nothing leaves the machine.