cursor namespace
cursor is not a Rius namespace. Rius defines only the keys below
in it, each under a documented namespace exception; every other
cursor key Rius uses is upstream’s (see upstream keys).
Generated from rius-semconv 1.6.0, the Rius attribute registry, and updated on each of its releases.
Attributes
Deprecated
| Key | Type | Replaced by | Description |
|---|---|---|---|
cursor.cwd | string | process.working_directory | Former spelling of process.working_directory for Cursor: the directory a Cursor session ran in. [6] Moved to process.working_directory, the OpenTelemetry key for the working directory. The coding-agent plugin wrote this spelling before; the Rius backend reads both for as long as traces carrying it are stored. |
cursor.git_branch | string | vcs.ref.head.name | Former spelling of vcs.ref.head.name for Cursor: the git branch a Cursor session ran on. [7] Moved to vcs.ref.head.name, the OpenTelemetry key for the git branch. The coding-agent plugin wrote this spelling before; the Rius backend reads both for as long as traces carrying it are stored. |
cursor.version | string | service.version | Former spelling of service.version for Cursor: the Cursor version that ran the session. [19] Moved to service.version, the OpenTelemetry key for the version. The coding-agent plugin wrote this spelling before; the Rius backend reads both for as long as traces carrying it are stored. |
Notes
[1] cursor.background: Cursor’s is_background_agent, onto the session’s root span.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[2] cursor.composer_mode: Copied from Cursor’s sessionStart hook (agent, ask, edit), onto the
session’s root span.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[3] cursor.context.context_tokens: Copied from Cursor’s preCompact hook onto the model call it interrupted.
A measure of the context window, not of one request’s input, so not
gen_ai.usage.input_tokens.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[4] cursor.context.context_usage_percent: Copied from Cursor’s preCompact hook, which documents it as a number.
Cursor sends whole numbers today, so the plugin must write it as a double
even when the value has no fraction.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[5] cursor.context.context_window_size: Copied from Cursor’s preCompact hook, beside cursor.context.context_tokens.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[6] cursor.cwd: Kept so a reader of older coding-agent traces can tell what the key was.
[7] cursor.git_branch: Kept so a reader of older coding-agent traces can tell what the key was.
[8] cursor.session.final_status: Copied from Cursor’s sessionEnd hook. Cursor documents no values for it.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[9] cursor.session.reason: Copied from Cursor’s sessionEnd hook (completed, aborted, error,
window_close, user_close). An error reason also sets the root span’s
status.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[10] cursor.subagent.id: As cc.subagent.id, for Cursor, and not gen_ai.agent.id for the same
reason.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[11] cursor.subagent.message_count: Copied from Cursor’s subagentStop hook.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[12] cursor.subagent.status: Copied from Cursor’s subagentStop hook (completed, error, aborted).
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[13] cursor.subagent.tool_call_count: Copied from Cursor’s subagentStop hook.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[14] cursor.thinking.duration_ms: Cursor reports thinking time, not thinking tokens, so this cannot be
gen_ai.usage.reasoning.output_tokens.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[15] cursor.tool.closed_at_session_end: Set only when true. The call’s outcome is unknown, not successful.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[16] cursor.tool.interrupted: Set only when true.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[17] cursor.turn.loop_count: Copied from Cursor’s stop hook.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[18] cursor.turn.status: Copied from Cursor’s stop hook (completed, aborted, error); it also sets
the turn span’s status.
Namespace exception: Named after the coding agent that produced it, like every key the coding-agent plugin writes for a fact only that agent has. Shipped before the plugin was registered here. Most copy a field of Cursor’s hook input.
[19] cursor.version: Kept so a reader of older coding-agent traces can tell what the key was.