Write calls can also emit implicit-accept
Developer decision Facts.
Evidence captured
Each Cursor event produces this evidence:
The adapter uses Cursor’s
conversation_id as the Session identifier.
Before you begin
Install the CLI and get a capture token with Configure local capture. You also need the Cursor desktop app and itscursor launcher. Start and close Cursor once so that
~/.cursor exists.
Install capture
-
Connect the CLI to the Sediment endpoint:
-
Install capture in the repository:
Replace
alicewith your developer identifier. The installer preserves other commands in~/.cursor/hooks.jsonand adds native user hooks for:postToolUse, matched to successful AgentWritecallspostToolUseFailure, matched to failed AgentWritecallsafterTabFileEdit, for accepted Tab edits
-
Open the enrolled repository in Cursor:
The hooks read
~/.sediment/env.shdirectly, so you don’t need to load it or restart Cursor. After you upgrade Sediment, rerun the install command with the same flags.
Configure Developer decisions
Each successful AgentWrite sends a Developer decision with
decision=accept and explicit=false. It records that the tool succeeded, not
that a person approved it. The recorded time is when the hook received the
event, because Cursor supplies no execution time.
The hooks read the endpoint, token, and developer identifier from the generated
env.sh, as data; they never run it as a script. If another system owns the
environment, install with --no-env, and set SEDIMENT_OTLP_ENDPOINT and
SEDIMENT_INGEST_TOKEN in Cursor’s environment. Then fully quit Cursor, and
launch it from that shell. Without SEDIMENT_OTLP_ENDPOINT, the hooks still
mark commits but send no decisions.
Inference calls and Edit observations
Cursor doesn’t support either. Sediment hasn’t verified an identifier that links Cursor’s hooks to its model requests, so don’t treat Cursor’s gateway requests as part of the same Session. The hooks don’t receive the applied text or the file’s state at Session end that an Edit observation needs.Verify capture
Remote checks need a separate operator login.-
Check the configuration:
-
Ask Cursor Agent, not Tab, to create a small file with its
Writetool, and commit the file. -
Read the commit’s Session note:
-
Copy the
session_idfrom the entry withtool: "cursor", and check that Session on the server:The check needs a Cursor Developer decision in that Session and its entry in the note.
Limits and troubleshooting
- The integration covers the local Cursor desktop app only. It doesn’t configure Cursor Cloud Agents, Cursor CLI, Enterprise cloud-distributed hooks, or the Sediment fleet bundle.
- The hooks don’t send prompts, model output, edit text, file content, tool output, or your Cursor account email.
- Without
conversation_id, the hooks record nothing. Withouttool_use_id, a successful write marks the Session but sends no decision. - The hooks find the repository from the edit’s absolute path, or else from
the event’s
cwdor workspace roots. If several workspace roots are different repositories, the hooks skip the marker and logambiguous repository directory. - Hook and delivery failures never block Cursor. The hooks write a short diagnostic to standard error and skip that evidence.
- If
env.shis missing or malformed, a successful write still marks the Session but sends no decision, anddoctorreportsFAIL. Rerunsediment installto regenerate it. - If
doctor --fetchreports a notes-ref failure, follow Repair a notes ref.