Skip to Content

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

KeyStabilityTypeDescriptionExamples
cursor.backgroundDevelopmentbooleanWhether a Cursor session was a background agent rather than an interactive one. [1]true
cursor.composer_modeDevelopmentstringThe Cursor composer mode a session ran in. [2]agent
cursor.context.context_tokensDevelopmentintTokens in Cursor’s context window when it compacted the conversation. [3]108800
cursor.context.context_usage_percentDevelopmentdoubleHow full Cursor’s context window was, from 0 to 100, when it compacted the conversation. [4]85.0
cursor.context.context_window_sizeDevelopmentintThe size of Cursor’s context window, in tokens, when it compacted the conversation. [5]128000
cursor.session.final_statusDevelopmentstringA Cursor session’s final status, as Cursor reports it. [8]completed
cursor.session.reasonDevelopmentstringWhy a Cursor session ended, as Cursor reports it. [9]completed
cursor.subagent.idDevelopmentstringCursor’s id for one subagent run. [10]sub_7f3a9c
cursor.subagent.message_countDevelopmentintHow many messages a Cursor subagent exchanged. [11]45
cursor.subagent.statusDevelopmentstringHow a Cursor subagent ended, as Cursor reports it. [12]completed
cursor.subagent.tool_call_countDevelopmentintHow many tool calls a Cursor subagent made. [13]12
cursor.thinking.duration_msDevelopmentintMilliseconds a Cursor model call spent thinking, summed over its thinking blocks. [14]4200
cursor.tool.closed_at_session_endDevelopmentbooleanWhether the plugin closed a Cursor tool call at session end because no result ever came. [15]true
cursor.tool.interruptedDevelopmentbooleanWhether a Cursor tool call was interrupted before it finished. [16]true
cursor.turn.loop_countDevelopmentintHow many automatic follow-ups Cursor had already run when a turn stopped. [17]0
cursor.turn.statusDevelopmentstringHow a Cursor turn ended, as Cursor reports it. [18]completed

Deprecated

KeyTypeReplaced byDescription
cursor.cwdstringprocess.working_directoryFormer 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_branchstringvcs.ref.head.nameFormer 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.versionstringservice.versionFormer 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.

Last updated on