Skip to Content
Rius

What does a session in Cursor (beta) look like as a trace?

Rius turns each Cursor (beta) agent chat into one trace, with the session as the root and each turn, model call, tool call and subagent as spans beneath it. Every span carries timing, status and names such as the model or the tool. Prompts, answers and tool output appear only when you enable a folder with content. The spans carry no token counts or cost.

How it works

The plugin turns the hook events from a Cursor (beta) chat into a tree of spans. The tree looks like this:

AGENT cursor session └─ CHAIN a turn: one prompt and everything it caused └─ LLM the answer, with its model └─ TOOL a tool call. A shell command that exits non-zero is an error. └─ AGENT a subagent, under the Task call that started it

What is on each span:

  • The session (root). One agent span for the whole chat. On the Agents page the chat appears under an agent named cursor.
  • Each turn. A span for one prompt and everything it caused.
  • Each model call. A span for the answer, with the model name. With content on, it also holds your prompt and the agent’s answer.
  • Each tool call. A span with the tool name and, on failure, the error type. A shell command that exits non-zero is marked as an error. With content on, it also holds the tool’s input and output.
  • Each subagent. An agent span nested under the Task call that started it, with its own spans below.

Every span has timing and status. The times are when Cursor reported each step, not when the model call started.

The trace fills in while you work. Spans arrive when the chat starts, after each answer, and every 20 tool calls. The trace closes when Cursor ends the session. If Cursor never says so, your next chat closes it once it has been idle for 12 hours.

With plugin 0.6.2 or later, every span carries user.id, set to the email you signed in with. A chat sent with a key you stored yourself carries no user and lands in the anonymous row on the Users page.

Set it up

  1. Install the plugin. In Cursor’s plugin settings, choose Import from Repo and enter glassflow/rius-coding-agents. Installing sends nothing, and tracing stays off until you enable a folder. The plugin needs version 0.6.0 or later for Cursor (beta), Python 3.9 or later on your PATH, and macOS or Linux.
  2. Sign in and enable a folder. In the agent chat, type each command yourself, because the agent never starts one on its own. Run /rius-login, pick a workspace in the browser and click Connect. Then run /rius-enable-here in the repo and check it with /rius-status.
/rius-login /rius-enable-here /rius-status
  1. Choose how much to send. /rius-enable-here sends structure only: the span tree, models, timing, tool names and error types, with no prompts, answers or tool output. To see what the agent said and what each tool received and returned, run /rius-enable-content-here instead. The plugin replaces the secrets it recognizes with a marker and caps each value at 32 KB. This is best effort, so a secret in an unfamiliar format is sent. /rius-disable-here stops a folder, and a disabled folder wins over any enabled parent.
  2. Work as usual, then open the chat in the trace list at console.rius-glassflow.com.

The Cursor guide covers older cursor-agent versions, using a key from the console, the settings variables and uninstalling.

What you get

  • One trace per chat. The waterfall in the trace list shows every turn, model call, tool call and subagent in order. A failed shell command is marked as an error, so you can go from a bad chat to the exact step.
  • Who sent it. The Sent by column in the trace list shows whose key sent each chat, and the Users page groups chats by developer.
  • An agent view. The cursor agent on the Agents page counts a chat once its trace is closed. The plugin sends no heartbeat, so chats do not appear under Instances.
  • Questions in plain language. The plugin registers the Rius MCP server as rius. After a second sign-in you can ask Cursor (beta) to show your last failed chat and which tool call went wrong.
  • A local record you control. Each event is first written to a file under ~/.cursor/rius/spool/, readable only by you. With content off, no content is written there.

What the spans do not have: token counts and cost. Cursor’s hooks do not report usage, so a Cursor (beta) trace shows the full tree, timing, models, tools and errors, but no token usage and no cost. Cursor’s cloud and background agents and Tab completions are not traced.

Cursor support is in beta. It is tested against hook payloads from real cursor-agent sessions, mostly headless runs. Tool calls in an interactive cursor-agent session, the agent in the editor and Import from Repo are not tested yet, so some details may change.

When something else fits

Still stuck? Get help

Last updated on