Cursor (beta)
The Rius plugin for Cursor turns each Cursor agent chat into a trace in
Rius: your prompts, the agent’s answers, every tool call, and the subagents
it started. It works with the agent in the Cursor editor and with
cursor-agent in the terminal. The plugin also brings the
Rius MCP server, so you can ask Cursor about those chats.
Beta. Cursor support needs version 0.6.0 or later of the Rius plugin. It is tested against Cursor’s documented hooks, not yet against a live Cursor session, so some details may change. The same plugin traces Claude Code and Codex; each one keeps its own sign-in, key, and folder rules.
No tokens or cost. Cursor doesn’t give plugins token counts, so Cursor traces show no token usage and no cost. You still get the full span tree, timing, models, tools, and errors.
Try it in 5 minutes
- Install. In Cursor’s plugin settings, choose Import from Repo and
enter
glassflow/rius-coding-agents. See Install. - Sign in. In the agent chat, run
/rius-login, then pick a workspace in the browser and click Connect. See Sign in. - Turn tracing on. In a repo, run
/rius-enable-here, then/rius-status. See Choose which folders are traced. - Work as usual, then find the chat in the trace list at
console.rius-glassflow.com. - Ask about it. Click Connect next to
riusin Cursor’s MCP settings, then ask “list my recent Cursor chats in Rius”. See Query your chats.
Requirements
- Cursor with plugin support, or
cursor-agent. - Python 3.9 or later on your
PATH, andbash. The plugin uses only the Python standard library. - macOS or Linux. Windows is untested for Cursor.
Install
In Cursor’s plugin settings, choose Import from Repo and enter
glassflow/rius-coding-agents. Or clone the repo into
~/.cursor/plugins/local/rius.
Installing sends nothing. Tracing stays off for every folder until you enable one.
If you also have the Rius plugin for Claude Code, keep it. Cursor runs Claude Code plugin hooks too, but the Claude Code side recognizes a Cursor chat and does nothing, so nothing is traced twice.
Older cursor-agent versions
cursor-agent releases before 2026-08-27 ignore hooks that come from a
plugin. For those, add the same hooks to your own ~/.cursor/hooks.json.
<plugin> is the folder the plugin is installed in:
bash <plugin>/scripts/rius_ctl.sh install-hooks --agent cursorIt leaves your other hooks alone, and running it again changes nothing.
Run it again after you update the plugin, so the hooks point at the new
version. Add --path <file> to write a project’s .cursor/hooks.json
instead. uninstall-hooks --agent cursor takes the Rius hooks back out.
Sign in
In the agent chat:
/rius-loginThe commands only run when you type them; the agent never starts one on its own. Each runs a script through the agent’s shell tool, so Cursor may ask you to approve the command. Then, in the browser:
- Sign in, or sign up if you don’t have an account yet.
- Check that the page shows the same code, and the name of your machine. Only continue if you just started the sign-in yourself.
- Choose the workspace this machine sends chats to.
- Click Connect.
Signing in stores one key for this machine in
~/.cursor/rius/credentials.json, readable only by you. It is separate from
the Claude Code key: signing out of one doesn’t sign out the other. The key
is listed under Settings → API keys in the console, where a workspace
admin can revoke it.
Choose which folders are traced
Tracing is off everywhere until you turn it on for a folder.
| Command | What it does |
|---|---|
/rius-enable-here | Trace this folder and everything under it, structure only |
/rius-enable-content-here | The same, plus prompts, answers, and tool input and output, with secrets removed |
/rius-disable-here | Stop tracing this folder. A disabled folder beats any enabled parent. |
/rius-on, /rius-off | Turn tracing on or off for this chat only |
/rius-status | Whether this folder is traced, and why |
/rius-logout | Revoke the key and delete it from this machine |
If a command can’t find the plugin, start a new chat and try again.
What you see in the console
- Traces. Each chat is one trace, and its spans arrive while you work: when the chat starts, after each answer, and every 20 tool calls.
- Agents. Chats show up as an agent named
cursoron the Agents page. The plugin sends no heartbeat, so Cursor chats don’t appear under Instances. A chat counts in the agent’s figures once its trace is closed. - Users. The plugin doesn’t set an end user, so chats land in the anonymous row of the Users page. The Sent by column in the trace list shows whose key sent each one.
A chat’s trace closes when Cursor ends the session. If Cursor never says so, the trace is closed by your next chat once it has been idle for 12 hours.
What gets captured
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| Captured | Structure only (default) | With content |
|---|---|---|
| Span tree, timing, status | ✓ | ✓ |
| Model names | ✓ | ✓ |
| Tool names, error types, subagents | ✓ | ✓ |
| Tokens and cost | ✗ | ✗ |
| Your prompts and the agent’s answers | ✗ | ✓ |
| Tool inputs and outputs | ✗ | ✓ |
With content on, the plugin replaces the secrets it recognizes, such as cloud and API keys, tokens, and private keys, with a marker before anything is sent, and caps each value at 32 KB. This is best effort: a secret in a format it doesn’t know is sent.
Each event is first written to a local file under ~/.cursor/rius/spool/,
readable only by you. With content off, no content is written there. A
chat’s file is deleted once the chat has been idle for 7 days and its trace
is closed.
Not traced: Cursor’s cloud and background agents, and Tab completions. Span times are when Cursor reported each step, not when the model call started.
The plugin contacts three hosts and nothing else:
ingest.eu.console.rius-glassflow.com for traces,
connect.console.rius-glassflow.com for sign-in and sign-out, and
mcp.eu.console.rius-glassflow.com when you use the MCP tools.
Query your chats from Cursor
The plugin registers the Rius MCP server as rius. It signs in on its own,
through your Rius account: click Connect next to rius in Cursor’s MCP
settings, or run cursor-agent mcp login rius. This is a second sign-in,
separate from /rius-login. Then ask in plain language:
- “Show me my last failed Cursor chat and which tool call went wrong.”
- “Which tools did my Cursor chats call most this week?”
The tools reference lists everything the server can answer.
Use a key you made in the console
To trace with a key you created under Settings → API keys (with Send telemetry), store it from a terminal. The command reads the key from standard input (here, the clipboard on macOS), so it never lands in your shell history:
pbpaste | bash <plugin>/scripts/rius_ctl.sh use-key --agent cursorSetting RIUS_API_KEY or
RIUS_ENDPOINT in the environment does nothing: a repository can set
environment variables for the agent, so the plugin only uses a key you
stored yourself.
Settings
These are environment variables. They can only turn things off.
| Variable | What it does |
|---|---|
RIUS_CAPTURE_CONTENT | false sends structure only from every folder |
RIUS_CURSOR_ENABLED | false turns tracing off everywhere |
RIUS_CURSOR_MAX_ATTR_BYTES | Lowers the 32 KB cap on each captured value |
RIUS_CURSOR_DEBUG | true writes verbose logs to ~/.cursor/rius/log/ |
Sign out and uninstall
Run /rius-logout first. It revokes the key and deletes it from this
machine; if you skip it, the key stays valid until it expires. Then remove
the plugin in Cursor’s plugin settings, and run uninstall-hooks if you
used install-hooks. Delete ~/.cursor/rius/ to remove folder rules, logs,
and the local event files:
rm -rf ~/.cursor/rius/Troubleshooting
Start with /rius-status.
- The
Reasonline says no path rule matches. Run/rius-enable-herein this folder. - The
Reasonline says there is no key. Run/rius-login. - Nothing arrives from
cursor-agent. Older versions ignore plugin hooks. See Older cursor-agent versions. - A command says it can’t find the plugin. Start a new chat, or run the same script from a terminal.
- The MCP tools answer 401. Click Connect next to
riusin the MCP settings again.