Skip to content

v0.1.10

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Oct 05:40
· 37 commits to main since this release

Cursor support, verified against a running agent rather than read about.

Added

Cursor. sessionStart, postToolUse, postToolUseFailure and
sessionEnd — the four canonical events exactly, which is not what an
earlier reading of the documentation suggested. Hooks go in
.cursor/hooks.json, shaped {"version": 1, "hooks": {…}}.

Six payloads were captured from cursor-agent 2026.10.01 and three of
them changed the mapping:

  • One command fires two events. A failing build arrives as
    afterShellExecution, carrying the command and its output, and as
    postToolUseFailure, carrying the same failure with a tool name, a
    working directory and an error message. Only the tool events are mapped;
    mapping both would look one error up twice.
  • The exit code is readable. postToolUse returns its result as a JSON
    string — {"output":"…","exitCode":0} — so failure is read out of the
    payload rather than guessed from the output's shape.
  • Context goes back as a top-level additional_context, snake_case,
    unlike every other agent here.

That last one was measured, not taken on trust: a hook returned a probe
token and the model repeated it verbatim. It is the only reply path in
this project verified by watching the model receive it, and the reason is
that Codex's documented path turned out to be wrong in a way that would
have been completely silent.

What Cursor cannot do

A piped build is invisible. postToolUse hands its result back as a JSON
string, so a masked failure's output arrives with its newlines escaped,
on one line, and the fingerprinter finds nothing in it. No mapping can fix
that, and the agents that can see a piped failure are listed in
docs/compatibility.md.

Also

Every Cursor payload carries user_email. The capture script now scrubs
email addresses by shape rather than by field name, so an agent that
starts sending one tomorrow is covered, and a test refuses any address
reaching the corpus that is not the placeholder.

Upgrading

npm install -g forgelore        # or
curl -fsSL https://raw.githubusercontent.com/forgeprint/forgelore/main/scripts/install.sh | bash

Nothing to migrate. No fingerprint changes. The record schema is 1 and the
mapping format is 2.

gh attestation verify forgelore_linux_amd64 -R forgeprint/forgelore
npm audit signatures

Which agents this release supports

Agent Checked against a running agent
Claude Code 2.1.290 hooks, both MCP protocol eras, usage reader A
Copilot CLI 1.0.91 hooks only — its MCP client has never been connected B
Gemini CLI 0.62.0 hooks only — its MCP client has never been connected B
Cursor 2026.10.01 hooks only — its MCP client has never been connected B
Codex CLI nothing; the mapping is derived from schemas in its binary unverified