Repository navigation
v0.10.1: the dashboard inside the package
pip install --upgrade agentmetry==0.10.1The dashboard is inside the package. On 0.10.0 a pip install had none:
agentmetry dashboard signed the browser in and showed a JSON 404, and
agentmetry stats and agentmetry detections reported an empty trail because
they never sent the API token. Both are fixed, and CI now installs a built
wheel and checks the dashboard loads, so the gap cannot come back unnoticed.
Upgrade with pip install --upgrade agentmetry and restart the recorder.
Also new: agentmetry cloud cursor-cache, which reads Cursor cloud-agent tool
calls from the desktop app's local cache, and a fix for cloud claude, which
crashed before its first request. The ruleset fingerprint is unchanged.
Added
agentmetry cloud cursor-cache: Cursor cloud-agent tool calls, read from
the Cursor desktop app's own cache. A cloud agent runs on Cursor's VM,
where no hook on this machine fires. When the desktop app streams one, it
caches the conversation in its local state database, including every tool
call: terminal commands, file reads and edits, searches, web fetches and MCP
calls, with paths under the VM's/workspace. The command reads that
database read-only, maps each finished call to the name the local Cursor
hooks record (shell.run,cursor.Read,cursor.Write,
cursor.MCP:<tool>), and runs it through the hook client's own mapper, so
arguments are hashed and traits and ATT&CK labels computed in-process, as
for a local event. Results and edit bodies are never forwarded. Events record
ascursor_cloudundercursor-cloud-<agent id>, the correlation id the
Cloud Bridge API path uses. A second run imports nothing twice, a call whose
post failed is retried, and--dry-runcounts without posting. No vendor
key, no repository access and no request to Cursor. Run against a real
database on 2026-10-21: 3 cloud-agent conversations, 1,251 finished tool
calls, read in about six seconds from a 7.1 GB file. What it cannot see:
agents the desktop app never streamed; it records after the fact and blocks
nothing; the cache format is undocumented, so unrecognised rows are counted
and skipped; and the cache is a file the user can edit, so it is a claim to
check against Cursor's own run stream, not proof.
Fixed
- The package had no dashboard. The recorder looked for the dashboard's
static export only atapps/dashboard/outin a git checkout, and the wheel
shipped just the Python package. So on apip install,agentmetry dashboardsigned the browser in and landed it on{"detail":"Not Found"}.
It worked on the maintainer's machine only because that recorder runs from a
checkout. The release build now bundles the export into the package as
agentmetry/dashboard_static, the recorder serves it when no checkout build
exists, and with neither it serves a page saying so instead of a JSON 404.
CI builds a wheel with the export on every change, installs it in a clean
environment, serves it from a directory with no checkout above it, and fails
if/is not the dashboard; the release build checks the same, and that the
wheel carriesindex.html. Found by installing 0.10.0 from PyPI on a clean
Python 3.11 environment and walking the README as a new user would. agentmetry statsandagentmetry detectionsprinted nothing over a full
trail. Neither sent the per-install token that every route but health has
required since 0.9.3. The recorder answered 401, and the CLI read the error
body as if it were the answer:statsprinted "Events: 0" anddetections
printed "No detections" for a session holding a critical detection. Both now
send the token, honourAGENTMETRY_URLasdispositionand the hooks do,
and report a refusal as an error with what to do about it. Tests pin the
token and the refusal.doctortold a pip install to run scripts it does not have. For an agent
installed without its hook it said to runscripts/install_<agent>_hooks.ps1,
which exist only in a checkout. It now saysagentmetry hooks install, and
names the Antigravity script only when Antigravity is the agent missing,
since that is the onehooks installdoes not write.- One
scanfinding explained itself with its own code. An MCP server
launched with-yprinted "auto_confirm" as its explanation. It now says the
package manager installs and runs the package without asking first. agentmetry cloud claudecrashed before its first request. The command
readargs.remoteto choose between local and remote sessions, and the
parser never defined--remote, so every run with
ANTHROPIC_COMPLIANCE_KEYset raisedAttributeError. The flag now exists:
local sessions by default,--remotefor the API's remote ones. The tests
covered the mappers and never ran the command; two new tests drive it end to
end with the vendor API and the ingest stubbed, and both fail on the old
parser.cloud claudedoes not see Claude Code cloud sessions, and the 0.9.7 entry
implied it did. Anthropic's Compliance API covers Claude Code in the CLI and
desktop app, and Cowork, and its announcement of 2026-08-11 says the beta
"doesn't include Claude Code on the web". Socloud clauderecords sessions
that ran on a developer's machine (which the hooks already see live) and
Cowork, not agents running on Anthropic's infrastructure. The 0.9.7 entry is
corrected in place.- The 0.9.7 entry for Cloud Bridge claimed Cursor's live tool-call stream.
map_cursor_stream_tool_callshipped, but no code fetches the stream, so
agentmetry cloud cursorrecords agent lifecycle and runs (status, duration,
pushed branches, PR) and no tool calls. The 0.9.7 entry is corrected in
place. Neither path has yet been run against a live vendor key.
The detection ruleset is unchanged (fingerprint 15846a0915769d4a), as are the hash-chain record format and the event schema version (1.2.0).