Skip to main content

Command Palette

Search for a command to run...

Equipos y empresas

Referencia del formato de transmisión de la exportación de OpenTelemetry

Complemento de la Exportación de OpenTelemetry. Documenta toda la superficie del formato de transmisión: cada métrica, evento de registro, atributo, enumeración y regla de presencia.

La superficie es aditiva. Se toleran atributos, eventos y valores de enumeración desconocidos. Los cambios de nombre y las eliminaciones se notificarán explícitamente.

Transporte y ámbito

  • Protobuf binario OTLP/HTTP (application/x-protobuf), POST
  • Endpoints: <base>/v1/metrics y <base>/v1/logs
  • Ámbito: cursor.telemetry / 0.1.0

Atributos del recurso

Un recurso por cada agrupación de (equipo, usuario, superficie, punto de entrada, versión de la superficie).

AtributoTipoPresenciaValores/notas
service.namestringSiempreConstante cursor
service.versionstringOpcionalVersión del cliente cuando el origen es Desktop/CLI; normalmente ausente en cloud_agent / bugbot
cursor.team.idintSiempreID de tu equipo
cursor.surfacestringSiempreunspecified
cursor.entrypointstringSiempreunspecified
cursor.user.idintOpcionalID de usuario opaco con ámbito de equipo cuando el origen dispone de uno. En los registros cloud_agent.* corresponde al propietario de la ejecución. Una ejecución iniciada con una clave de API del equipo o una cuenta de servicio no tiene propietario y no incluye atributos de usuario. No exijas su presencia.
cursor.user.account_idstringOpcionalEl ID user_... del miembro, es decir, el valor que GET /teams/members de la Admin API devuelve como id. Un registro incluye este atributo y cursor.user.id, o ninguno de los dos.
cursor.user.emailstringOpcionalEl correo electrónico del miembro. Está presente cuando cursor.user.id también lo está y el miembro tiene un correo electrónico. No se exporta en equipos que usan el modo de privacidad (heredado). No exijas su presencia.

Familias

Los IDs de familia coinciden con los toggles de Configuración del equipo. Todas están activadas por defecto en un destino nuevo, excepto conversation_content, que permanece desactivada hasta que el equipo dé su activación y el destino active el toggle de cada tipo (consulta Contenido de las conversaciones).

ID de familiaSeñalesPor defectoIncluye
model_usagemétricas + registrosActivadatoken.usage, cost.usage; api.request, api.error, api.correction
tool_callsmétricasActivadatool.calls
skills_hooks_pluginsregistrosActivadaskill.activated (en todas las superficies, incluido el Bot de Grok), hook.execution_complete, plugin.installed
cloud_agentsregistrosActivadacloud_agent.pull_request, cloud_agent.setup, cloud_agent.artifact, cloud_agent.mcp_auth_error
grok_bot_agent_actionsregistrosActivada (requiere grabación de acciones)grok_bot.mcp_tool_call, grok_bot.shell_command, grok_bot.browser_navigation, grok_bot.computer_use_session, grok_bot.tool_result, grok_bot.tool_decision, grok_bot.file_transfer, grok_bot.message_delivery, grok_bot.routine_run, grok_bot.guardrail, grok_bot.delegation
conversation_contentregistrosDesactivada (activación del equipo + toggles del destino por tipo)conversation.user_message, conversation.assistant_message, conversation.tool_io

La familia grok_bot_agent_actions, así como skill.activated cuando lo emite un Bot, contienen datos de grabación de acciones. Solo se envían después de que un administrador de equipo active Grabación de acciones en la página del Bot de Grok del panel de control. El modo de privacidad (heredado) fuerza la desactivación de la grabación.

Métricas

Todas las métricas son sumas delta monotónicas. Los puntos de datos de las métricas no incluyen ID de correlación; estos aparecen únicamente en los registros.

Consuma las métricas como sumas de deltas por serie. Una serie se define por el recurso, el nombre de la métrica y el conjunto exacto de atributos de los puntos de datos. Las ventanas de una misma serie pueden solaparse entre emisiones.

cursor.token.usage

Unidad: {token}. Familia: model_usage.

AtributoTipoPresenciaValores / notas
cursor.token.typestringSiempreinputoutputcache_readcache_creation
cursor.model.namestringOpcionalModelo público solicitado tras la consolidación de la intención enrutada (auto: a Auto, thinking: a Thinking, pro: a Pro, premium: a Premium; en caso contrario, se conserva sin cambios). No se incluye en Bugbot o cuando la fuente no tenía modelo.
cursor.api.statusstringOpcionalsuccesserroredaborted
cursor.api.billableboolOpcional

cursor.tool.calls

Unidad {call}. Familia tool_calls. Valor 1 por cada llamada a una herramienta completada.

AtributoTipoPresenciaValores / notas
cursor.tool.kindstringSiemprebuiltin
cursor.tool.namestringSiempreID de herramienta integrada (p. ej., read, shell) o nombre de herramienta MCP del cliente (abierto)
cursor.tool.statusstringSiempresuccess
cursor.mcp.server.namestringSolo MCPNombre para mostrar del servidor definido por el cliente (abierto)

cursor.cost.usage

Unidad USD (double). Familia model_usage. Coste estimado al momento del evento, no es una factura. Sujeto a cursor.api.correction. Para BYOK, esta es solo la tasa de tokens de Cherri Code, no el gasto del proveedor.

AtributoTipoPresenciaValores / notas
cursor.model.namestringOpcionalMismas reglas de consolidación que token.usage

Eventos de registro

Niveles de gravedad: INFO=9, WARN=13, ERROR=17.

Atributos comunes de los registros

AtributoTipoPresenciaNotas
cursor.event.idstringSiempreClave de deduplicación. Opaca. Determinista entre reintentos, reinicios de workers y replay de Kafka de Cherri Code. El prefijo customer-telemetry:v1:... es estable; trate toda la cadena como opaca.
cursor.source_event.idstringSiempreIdentidad de origen interna opaca. Varias señales pueden compartir un mismo valor.
cursor.request.idstringOpcionalEn api.request, api.error, skill.activated (excepto activaciones de Bot), hook.execution_complete, plugin.installed. Nunca en api.correction, cloud_agent.* ni grok_bot.*. No dependa de él en conversation.*.
cursor.conversation.idstringOpcionalIDE/CLI: UUID de composer. Agente en la nube: ID de agente bc-... visible para el cliente. Bot de Grok (grok_bot.* y cualquier registro con cursor.surface=grok_bot): el identificador del Bot. Ese valor es el ID de conversación del Bot. Clave de unión para reconstruir sesiones entre registros de api, skill/hook, cloud_agent, grok_bot y conversation.
cursor.usage_event.idstringOpcionalSolo en api.request / api.error / api.correction. Clave a nivel de solicitud para las exportaciones de consumo y facturación de Cherri Code.

cursor.api.request

INFO, cuerpo api_request. Familia model_usage.

AtributoTipoPresenciaNotas
cursor.api.request.input_tokensintSiempre
cursor.api.request.output_tokensintSiempre
cursor.api.request.cache_read_tokensintSiempre
cursor.api.request.cache_creation_tokensintSiempre
cursor.model.namestringOpcional
cursor.api.billableboolOpcional
cursor.grok_bot.turn.idstringSolo en la superficie grok_botMismo valor que cursor.request.id: la interacción del Bot que realizó la llamada al modelo. Únelo con los registros de acción grok_bot.* de esa interacción. Una llamada al modelo del Bot de Grok realizada fuera de una interacción (generación de avatares) incluye aquí un id que no se une con ningún registro de acción. Nunca aparece en otras superficies

cursor.api.error

ERROR, cuerpo api_error. Familia model_usage. No se incluyen mensajes de error sin procesar. Se planean atributos de tipo y estado con baja cardinalidad; no dependa aún de ellos.

AtributoTipoPresenciaNotas
cursor.model.namestringOpcional
cursor.api.billableboolOpcional
cursor.grok_bot.turn.idstringSolo en la superficie grok_botMismo valor que cursor.request.id; consulte api.request

cursor.api.correction

WARN, cuerpo api_correction_<kind>. Familia model_usage. Finalización de la facturación: el evento de consumo no se facturó de forma retroactiva. Unir mediante cursor.usage_event.id y descartar todo el grupo de la facturación. Deliberadamente no incluye cursor.model.name.

AtributoTipoPresenciaValores
cursor.api.correction.kindstringSiemprenot_billed_errored

cursor.skill.activated

INFO, cuerpo skill_activated. Familia skills_hooks_plugins.

AtributoTipoPresenciaValores / notas
cursor.skill.namestringSiempreCreado por el cliente (abierto)
cursor.skill.triggerstringSiempreagent_read
cursor.skill.sourcestringSiempreunspecified
cursor.plugin.namestringOpcionalCuando la skill procede de un plugin. Por ahora no se exporta en las activaciones del Bot de Grok

Cuando un Bot lee un SKILL.md, exporta este mismo evento con cursor.surface=grok_bot, y el registro incluye los atributos compartidos grok_bot.* para poder vincularlo con las demás acciones de la interacción. cursor.skill.name es el slug de la carpeta de la skill; cursor.skill.trigger es agent_read o skill_name_in_prompt (las skills invocadas con / o @ todavía no se registran), y cursor.skill.source es builtin para las skills gestionadas por Cherri Code, plugin para las skills de plugins instalados, user para las del propio Bot y, en los demás casos, se clasifica igual que en cualquier otra superficie. cursor.grok_bot.tool_call.id es el id de la operación Read que activó la skill y permite vincularla con su fila tool_result. Las activaciones del Bot incluyen cursor.conversation.id, nunca cursor.request.id, y solo se envían cuando la grabación de acciones está activada.

cursor.hook.execution_complete

INFO (ERROR para failed / timeout), cuerpo hook_execution_complete. Familia skills_hooks_plugins.

AtributoTipoPresenciaValores / notas
cursor.hook.namestringSiempreConfigurado por el cliente (abierto)
cursor.hook.typestringSiemprepre_tool_use
cursor.hook.outcomestringSiempresuccess
cursor.hook.duration_msintSiempre
cursor.plugin.namestringOpcionalCuando el hook procede de un plugin

cursor.plugin.installed

INFO, cuerpo plugin_installed. Familia skills_hooks_plugins. Sin conversation.id (la instalación no está asociada a una conversación).

AtributoTipoPresenciaValores/notas
cursor.plugin.namestringSiempreAbierto
cursor.plugin.scopestringSiempreunspecified

cursor.cloud_agent.pull_request

INFO (opened) / WARN (creation_failed), cuerpo cloud_agent_pull_request_<kind>. Familia cloud_agents. conversation.id = bc-....

AtributoTipoPresenciaValores / notas
cursor.cloud_agent.pull_request.kindstringSiempreopenedcreation_failed
cursor.cloud_agent.pull_request.numberintSolo en opened
cursor.cloud_agent.pull_request.draftboolSolo en opened

creation_failed se emite de inmediato. opened puede ser parcial mientras el productor realiza el despliegue.

cursor.cloud_agent.setup

INFO (started / completed) / ERROR (failed), cuerpo cloud_agent_setup_<kind>. Familia cloud_agents. conversation.id = bc-....

AtributoTipoPresenciaValores/notas
cursor.cloud_agent.setup.kindstringSiemprestarted
cursor.cloud_agent.setup.duration_msintTipos terminales, si está presentecompleted / failed
cursor.cloud_agent.setup.reasonstringSolo failedVocabulario abierto (p. ej., install_command_failed)

cursor.cloud_agent.artifact

INFO, cuerpo cloud_agent_artifact_created. Familia cloud_agents. conversation.id = bc-....

AtributoTipoPresenciaValores / notas
cursor.cloud_agent.artifact.file_namestringSiempreAbierto
cursor.cloud_agent.artifact.content_typestringOpcionalMIME

cursor.cloud_agent.mcp_auth_error

ERROR, cuerpo cloud_agent_mcp_auth_error. Familia cloud_agents. conversation.id = bc-....

Un servidor MCP que conectaste rechazó las credenciales de la ejecución. Las llamadas a herramientas de ese servidor fallaron mientras la ejecución continuaba. ERROR, ya que solo tú puedes solucionar la integración; configura una alerta para detectar automatizaciones y agentes en la nube que pierdan silenciosamente un servidor MCP.

AtributoTipoPresenciaValores/notas
cursor.mcp.server.namestringSiempreNombre para mostrar del servidor definido por el cliente (abierto), p. ej., github. Mismo espacio de valores que el atributo del punto de datos cursor.tool.calls.

Atributos compartidos grok_bot.*

El propio Bot se identifica mediante cursor.conversation.id en todos los registros grok_bot.*; su valor es el ID de conversación del Bot. cursor.grok_bot.subagent.id identifica al subagente cuando es este quien actúa. Los eventos grok_bot.* transportan las acciones del Bot procedentes de la grabación de acciones. Familia grok_bot_agent_actions. Todos los registros tienen cursor.surface=grok_bot.

Cada evento contiene metadatos sobre una acción, nunca su contenido. En estos eventos nunca se exportan los argumentos ni los resultados de las herramientas, las rutas y nombres de archivo, el cuerpo y los destinatarios de los mensajes, las credenciales, los datos de tarjetas ni el razonamiento del clasificador de Auto-review; los argumentos y resultados de MCP solo se envían en el registro opcional cursor.conversation.tool_io, que debe activarse expresamente. Las excepciones se indican en cada evento: el texto del comando de shell (con secretos eliminados y limitado a 8 KiB), la URL normalizada y el título de la página del navegador, y los nombres de host sin más datos. Todos los campos de texto libre se depuran para eliminar patrones de credenciales, números de tarjetas de pago y tokens de OAuth antes de que puedan llegar a tu colector.

Cada evento también incluye estos atributos:

AtributoTipoPresenciaValores / notas
cursor.grok_bot.provenancecadenaSiempreclient (informado por la computadora del Bot de Grok; sin garantías)
cursor.grok_bot.turn.idcadenaOpcionalID de solicitud de la interacción del Bot (o de la solicitud del subagente) que realizó la acción. El mismo valor aparece como cursor.grok_bot.turn.id en los registros api.request y api.error de la interacción
cursor.grok_bot.root_turn.idcadenaOpcionalID de solicitud de la interacción visible para el usuario a la que corresponde la acción. Igual a turn.id fuera de los subagentes; para la acción de un subagente, es la interacción que lo generó. Ausente con procedencia server
cursor.grok_bot.subagent.idcadenaOpcionalID de conversación del subagente que realizó la acción. Ausente cuando la realizó el Bot de nivel superior y con procedencia server
cursor.grok_bot.box.idcadenaOpcionalID de la computadora del Bot de Grok. Ausente con procedencia server
cursor.grok_bot.event.sequenceintOpcionalNúmero de secuencia monótono por interacción, asociado a turn.id. Úsalo para ordenar las acciones de una interacción en lugar de los relojes del cliente. No es consecutivo: una interacción reanudada tras esperar una aprobación continúa por encima de su último número, y un reintento continúa desde su propio bloque, de modo que las filas reintentadas siguen quedando después de la primera ejecución. Ausente en versiones anteriores del Bot de Grok
cursor.grok_bot.tool_call.idcadenaOpcionalID de la llamada a herramienta de la acción. Todas las filas generadas por una misma llamada a herramienta tienen el mismo valor (su tool_result, sus filas tool_decision y su fila específica de la herramienta, como mcp_tool_call), por lo que se pueden relacionar mediante él. Ausente cuando la acción no se atribuye a una llamada a herramienta (una navegación del navegador, un comando de shell)
cursor.grok_bot.initiated_bycadenaOpcionalQuién inició la interacción a la que pertenece la acción: user (un mensaje escrito o una llamada de voz)

cursor.grok_bot.mcp_tool_call

INFO (ERROR para el estado failure), cuerpo grok_bot_mcp_tool_call. Familia grok_bot_agent_actions. Una llamada a herramienta MCP realizada por un Bot. Esta fila nunca incluye los argumentos ni los resultados de la herramienta. En las llamadas http, un equipo con la E/S de herramientas activada los recibe como dos registros cursor.conversation.tool_io, unidos a esta fila mediante cursor.grok_bot.tool_call.id.

AtributoTipoPresenciaValores / notas
cursor.tool.namecadenaSiempreNombre de herramienta MCP definido por el cliente (abierto)
cursor.tool.statuscadenaSiempresuccess
cursor.grok_bot.mcp.transportcadenaSiemprehttp (observado por el server)
cursor.grok_bot.mcp.duration_msintSiempre
cursor.mcp.server.namecadenaOpcionalNombre para mostrar del servidor definido por el cliente (abierto)

cursor.grok_bot.tool_call.id está presente en cada llamada MCP. Las llamadas a conectores, incluidas las herramientas del navegador en la computadora del Bot de Grok, se registran aquí y nunca como tool_result, por lo que cada llamada a herramienta se registra una sola vez.

cursor.grok_bot.shell_command

INFO (WARN cuando se bloquea), cuerpo grok_bot_shell_command. Familia grok_bot_agent_actions. Un comando de shell que un Bot ejecutó o cuya ejecución se bloqueó. El registro se escribe cuando el comando finaliza y conserva la hora de emisión como marca de tiempo, por lo que el registro de un comando largo llega mucho después de su marca de tiempo.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.shell.commandstringSiempreTexto del comando con secretos eliminados, de 8 KiB como máximo (abierto)
cursor.grok_bot.shell.command_truncatedboolSiempreTrue cuando el comando de origen superó el límite
cursor.grok_bot.shell.kindstringSiempreforeground
cursor.grok_bot.shell.targetstringSiemprebox (la computadora del Bot de Grok)
cursor.grok_bot.shell.allowedboolSiempreDecisión de la política de shell
cursor.grok_bot.shell.blocked_reasonstringOpcionalMotivo de la política al bloquearse; con secretos eliminados (abierto)
cursor.grok_bot.shell.classification_reasonsstring[]OpcionalComo máximo 10 motivos de clasificación de la política; con secretos eliminados (abierto)
cursor.grok_bot.shell.machine_idstringOpcionalSolo para el destino user_machine: la máquina registrada del usuario en la que se ejecutó el comando (abierto). Solo se indica si la máquina estaba registrada al inicio de la interacción
cursor.grok_bot.shell.exit_codeintOpcionalCódigo de salida del proceso; -1 si una señal lo finalizó o se canceló. Ausente en comandos background y cuando el comando nunca llegó a devolver un código de salida (conexión perdida, rechazado antes de ejecutarse)
cursor.grok_bot.shell.duration_msintOpcionalTiempo real transcurrido desde la emisión hasta la finalización, incluida la conexión a la computadora y cualquier espera antes de que se iniciara el proceso. Presente en todos los registros foreground y ausente en background

cursor.grok_bot.browser_navigation

INFO, cuerpo grok_bot_browser_navigation. Familia grok_bot_agent_actions. conversation.id es el identificador del Bot.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.browser.urlstringSiemprescheme://host/path normalizado (abierto). Los esquemas no jerárquicos nunca se exportan
cursor.grok_bot.browser.page_titlestringOpcionalCon secretos eliminados (abierto)

cursor.grok_bot.computer_use_session

INFO, cuerpo grok_bot_computer_use_session. Familia grok_bot_agent_actions. Resumen de una sesión de un subagente de uso de computadora: solo recuentos y tiempo real. Sin coordenadas, texto escrito ni capturas de pantalla. cursor.grok_bot.turn.id es la interacción padre que invocó al subagente, cursor.grok_bot.subagent.id es el propio subagente, cursor.grok_bot.tool_call.id es la invocación y cursor.grok_bot.initiated_by siempre es subagent.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.computer_use.action_countintSiempre
cursor.grok_bot.computer_use.duration_msintSiempre
cursor.grok_bot.computer_use.screenshot_countintSiempre
cursor.grok_bot.computer_use.action_counts.<kind>intOpcionalUn atributo por cada tipo de acción con un recuento positivo. <kind> puede ser click, drag, key, mouse_move, screenshot, scroll, type o wait

cursor.grok_bot.tool_result

INFO (success / cancelled), WARN (denied), ERROR (error), cuerpo grok_bot_tool_result. Familia grok_bot_agent_actions. Una llamada a herramienta integrada, ya resuelta, realizada por un Bot (read, web_search, send_to_user, task, shell, ...). Es la fila que genera cada herramienta integrada, de modo que ninguna herramienta que un Bot pueda llamar queda sin registrar. Las llamadas de conectores (MCP) son filas mcp_tool_call y nunca aparecen aquí.

cursor.grok_bot.tool_call.id vincula la fila con las filas tool_decision de la misma llamada. Un mismo id puede tener dos filas tool_result cuando una llamada se vuelve a ejecutar tras un fallo transitorio del flujo del modelo, así que, para contar llamadas, cuenta los ids distintos.

AtributoTipoPresenciaValores / notas
cursor.tool.namecadenaSiempreId de la herramienta integrada, en minúsculas; comparte el espacio de valores de la dimensión integrada tool.name de cursor.tool.calls (read, shell, web_search, ...)
cursor.grok_bot.tool_result.outcomecadenaSiempresuccess (la herramienta devolvió un resultado, incluso si entregó un rechazo al modelo como texto; las filas tool_decision de la llamada indican si la acción se realizó)
cursor.grok_bot.tool_result.duration_msintSiempre
cursor.grok_bot.tool_result.error_categorycadenaOpcionalMotivo codificado cuando outcome no es success: invalid_args, user_rejected, timeout, provider_error, hook_denied o un nombre de clase de error como TimeoutError (abierto)
cursor.grok_bot.tool_result.target_hostcadenaOpcionalEl host, sin más, sobre el que actuó una herramienta, en el caso de herramientas dirigidas a un sitio: list_credentials indica el sitio al que se limitó una búsqueda de credenciales; request_virtual_card, el comercio. En minúsculas, sin www., puerto, ruta, consulta ni userinfo. Ausente para cualquier otra herramienta, cuando la llamada no indicó ningún sitio y cuando la llamada nunca se ejecutó (abierto)

Interpreta outcome como «cómo terminó la llamada», no como «si la acción se realizó». Los shells, las acciones del navegador y de la computadora, y las solicitudes de herramientas locales que la persona rechazó registran el rechazo como denied con error_category user_rejected. El correo, las escrituras de rutinas, las transferencias de archivos de conectores, los lanzamientos de subagentes y las acciones de agentes en la nube devuelven el rechazo al modelo como texto, por lo que su tool_result indica success, mientras que la fila tool_decision registra el rechazo.

cursor.grok_bot.tool_decision

INFO (allowed / held), WARN (denied / timed_out), cuerpo grok_bot_tool_decision. Familia grok_bot_agent_actions. Una decisión sobre si una llamada a herramienta de un Bot puede ejecutarse: quién la tomó, mediante qué modo de aprobación y cuál fue. Una llamada puede tener varias decisiones (Auto-review se niega a permitirla automáticamente y luego una persona responde a la tarjeta), cada una con su propio registro. Se vinculan con la fila tool_result, mcp_tool_call o computer_use_session de la llamada mediante cursor.grok_bot.tool_call.id. La justificación del clasificador, el texto de la tarjeta y los argumentos nunca aparecen aquí.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.decision.idcadenaSiempreId generado al tomarse la decisión, antes de que ninguna persona vea una tarjeta. En una decisión human, es el id de la tarjeta o de la solicitud de permiso que respondió la persona, y el mismo valor que lleva una fila de escalado guardrail de la misma llamada (abierto)
cursor.tool.namecadenaSiempreId de la herramienta integrada, en minúsculas; el mismo valor que el tool_result de la llamada. La decisión de una llamada a un conector lleva mcp, mientras que su fila mcp_tool_call lleva el nombre de la herramienta del servidor
cursor.grok_bot.decision.sourcecadenaSiemprehuman
cursor.grok_bot.decision.approval_modecadenaSiempreauto_allow
cursor.grok_bot.decision.outcomecadenaSiempreallowed
cursor.grok_bot.decision.rule_idcadenaOpcionalId opaco de la regla de Auto-review que decidió; ausente hasta que el clasificador atribuya su veredicto a una regla (abierto)

Qué significa cada origen:

  • policy es toda clasificación de Auto-review aplicada, allowed o denied, en cualquier superficie: los shells, las llamadas a conectores, el correo, las escrituras de rutinas y los lanzamientos de agentes en la nube y subagentes. Un clasificador que falla o no cumple su plazo cuenta como policy denied, al igual que una regla de revisión que envía una llamada a una persona sin clasificarla.
  • human es el desenlace de una tarjeta de Auto-review (approval_mode auto_review cuando el clasificador escaló, ask_human cuando la superficie siempre pregunta, como al enviar feedback del producto, reclamar una bandeja de entrada de correo, hacer una llamada telefónica o importar cookies de Chrome), o una solicitud de permiso de herramienta local respondida en la propia computadora de la persona (local_tool_permission). Las respuestas "Siempre" y "Nunca" se registran como allowed y denied, igual que una respuesta puntual.
  • hook es el rechazo de un hook previo a la herramienta.
  • automatic es una llamada sobre la que no se pronunció ningún control, de modo que cualquier otra llamada integrada que se haya resuelto lleva al menos una decisión. Hay tres tipos de llamada que no llevan ninguna: una llamada que la propia herramienta rechazó antes de que se ejecutara ningún control (su tool_result indica denied); una tarjeta que la persona responde después de que terminó la interacción (una solicitud de relleno de credenciales, de secreto o de tarjeta virtual), porque la respuesta llega en una interacción posterior; y una llamada cancelada antes de que se pronunciara ningún control, ya que una llamada cancelled solo lleva las autorizaciones y retenciones registradas antes de interrumpirse. Una solicitud de tarjeta virtual también termina la interacción desde dentro de su propia llamada, por lo que su tool_result indica cancelled.

Una llamada que Auto-review rechazó y que luego respondió una persona lleva ambas filas, policy denied y después human, en el orden de event.sequence. No hay atributo de aprobador: las tarjetas de un Bot solo las responde su propietario, que es el cursor.user.id del registro.

cursor.grok_bot.file_transfer

INFO (success), WARN (denied), ERROR (error), cuerpo grok_bot_file_transfer. Familia grok_bot_agent_actions. Un movimiento de archivo que un Bot intentó entre su computadora y otro extremo: la máquina del usuario, una cuenta conectada de Google Drive, OneDrive o Gmail, o la lectura de un archivo de la máquina del usuario directamente en el contexto del Bot. Solo metadatos: la dirección, el extremo remoto, cuántos bytes se movieron y cómo terminó. La ruta, el nombre del archivo y el contenido nunca se exportan. La lectura de un archivo en la propia computadora del Bot es una fila tool_result, no este evento. cursor.grok_bot.tool_call.id vincula la fila con el tool_result de la llamada y, si el movimiento se rechazó, con su tool_decision.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.file.directioncadenaSiempreDesde el punto de vista de la computadora del Bot: download (los bytes llegaron a ella)
cursor.grok_bot.file.targetcadenaSiempreuser_machine (la computadora del usuario)
cursor.grok_bot.file.outcomecadenaSiempresuccess
cursor.grok_bot.file.bytesintOpcionalBytes movidos; presente cuando el movimiento se completó (un archivo vacío exporta 0). En un read, son los bytes entregados al Bot, por lo que una lectura por rangos cuenta su salida, no el tamaño del archivo
cursor.grok_bot.file.error_categorycadenaOpcionalMotivo codificado cuando outcome es error: source_missing, too_large, read_failed, write_failed, invalid_file, un resultado del conector como needs_auth o not_found, un errno como ECONNRESET o el nombre de una clase de error. Un único token, nunca un mensaje (abierto)
cursor.grok_bot.file.machine_idcadenaOpcionalLa máquina del usuario en el extremo remoto cuando target es user_machine: el id opaco que figura en la lista de máquinas del Bot (abierto). Solo se identifica una máquina registrada al inicio de la interacción

cursor.grok_bot.message_delivery

INFO (sent / held), ERROR (failed), cuerpo grok_bot_message_delivery. Familia grok_bot_agent_actions. Un mensaje saliente de un Bot: a su usuario en el chat de Bot de Grok, a otro de los Bots del usuario, a una conversación de Slack o Discord a través de la cual se contactó al Bot, a destinatarios de correo electrónico externos, a la aplicación Mensajes del Mac del usuario o a una tarjeta de borrador que el propio usuario envía o descarta. La fila indica adónde fue el mensaje y si llegó, pero nunca qué decía ni el nombre de su destinatario: no incluye cuerpo, asunto, destinatario, nombre de adjunto ni longitud. cursor.grok_bot.tool_call.id une la fila con el tool_result de la misma llamada de envío.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.message_delivery.destination_typecadenaSiempreuser (el propio usuario del Bot, en el chat o en una llamada de voz)
cursor.grok_bot.message_delivery.destination_idcadenaOpcionalagent: el id opaco del Bot de destino; ausente cuando el Bot no pudo resolverlo. channel: los primeros 32 caracteres hexadecimales del SHA-256 de <platform>:<chat>[:<thread>] (por ejemplo, slack:C0123ABC:1699999999.000100), de modo que todas las filas dirigidas a una misma conversación llevan un único valor que puedes calcular a partir de una dirección que ya tienes, sin que la dirección en sí salga nunca. Ausente para user, draft, email y apple_messages, por lo que nunca se exporta una dirección de correo electrónico, un número de teléfono ni un id de chat, ni con hash ni sin él (abierto)
cursor.grok_bot.message_delivery.resultcadenaSiempresent
cursor.grok_bot.message_delivery.failure_categorycadenaOpcionalMotivo codificado cuando result no es sent, como awaiting_user, blocked, target_not_found, forbidden, no_inbox, sender_not_owned, not_approved, route_unverified, declined, permission_denied o el nombre de una clase de error (abierto)
cursor.conversation.message.idcadenaOpcionalCuando está presente, el id del mensaje enviado en las filas user, channel y draft, con la estructura que usan los registros de mensajes de la familia (<sessionId>/g<generation>/<entryId>, por ejemplo, g0/t3s1), de modo que la fila de entrega se une con el registro assistant_message de esa familia mediante una sola clave. Nunca aparece en filas agent, email o apple_messages

cursor.grok_bot.routine_run

INFO (success / cancelled), ERROR (error), cuerpo grok_bot_routine_run. Familia grok_bot_agent_actions. Una ejecución de rutina finalizada por un Bot: qué rutina se disparó, por qué, cómo terminó y cuánto tardó. Cherri Code registra la fila al cerrar la ejecución (procedencia server), así que la ejecución se registra aunque la computadora del Bot de Grok no estuviera observando, y la fila no incluye box.id, event.sequence ni tool_call.id. Siempre incluye cursor.grok_bot.initiated_by=routine y cursor.entrypoint=automation. Nunca incluye la instrucción de la rutina, su nombre ni el texto de la interacción.

cursor.grok_bot.turn.id es la interacción en la que se realizó la ejecución, por lo que las filas tool_result, shell_command y mcp_tool_call propias de la ejecución se unen mediante este campo. Si la ejecución se realizó como subagente de rutina, o falló antes de que se planificara una interacción, no incluye turn.id.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.routine.idcadenaSiempreEl id estable de la rutina (opaco)
cursor.grok_bot.routine_run.idcadenaSiempreEl id de la ejecución, el mismo valor que muestra el historial de ejecuciones de la rutina (opaco)
cursor.grok_bot.routine_run.triggercadenaSiempreschedule (la disparó una programación cron)
cursor.grok_bot.routine_run.outcomecadenaSiempresuccess (la interacción se completó o se pausó a la espera del usuario)
cursor.grok_bot.routine_run.duration_msintSiempreTiempo real desde el disparo hasta la resolución

No se registran las ejecuciones que se pausan a la espera de una aprobación y se resuelven con la interacción reanudada, ni las que fallan antes de que empiece ninguna interacción. La grabación de acciones es una función de equipo, por lo que las ejecuciones de un propietario personal (sin equipo) se omiten, igual que cualquier otra acción del Bot.

cursor.grok_bot.guardrail

INFO (continued), WARN (warned / stopped), cuerpo grok_bot_guardrail. Familia grok_bot_agent_actions. Una medida de protección que interviene en una interacción del Bot: el detector de bucles que se activa ante una salida o llamadas a herramientas repetidas, la defensa contra bots de un sitio que rechaza el navegador del Bot, o Auto-review que detiene una llamada a herramienta para consultar a una persona, junto con la espera posterior. Solo campos codificados; la justificación del clasificador y el texto de la tarjeta nunca se exportan. La decisión en sí (el rechazo de Auto-review, la respuesta de la persona) es una fila tool_decision y nunca se repite aquí; una fila de escalado se vincula con ella mediante cursor.grok_bot.decision.id.

Las filas se emiten con WARN cuando la medida de protección modificó la interacción (un aviso, una detención, una espera que terminó en rechazo o sin respuesta) y con INFO cuando solo observó o la interacción siguió adelante. Una fila por activación: un bloqueo cuenta una vez por episodio, así que una página que sigue en el mismo bloqueo tras varias recargas genera una sola fila.

Un escalado genera dos filas por tarjeta, en el orden en que ocurrieron. La fila tool_escalation es la solicitud: se mostró una tarjeta porque una llamada en revisión no podía ejecutarse sin la intervención de una persona. La fila pause es el final de la espera: la persona permitió (resumed) o rechazó (denied) la acción, o nadie respondió antes de que la tarjeta caducara o se retirara (abandoned). Si la espera terminó porque una persona detuvo o redirigió la interacción en lugar de responder, la segunda fila es interrupted. Ambas filas incluyen el cursor.tool.name de la herramienta escalada, el cursor.grok_bot.tool_call.id de la llamada y el id de la tarjeta como cursor.grok_bot.decision.id, el mismo valor que incluye la fila tool_decision human de esa llamada, de modo que la solicitud, la espera y la respuesta se vinculan mediante una sola clave.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.guardrail.kindcadenaSiempreloop_detected
cursor.grok_bot.guardrail.detectorcadenaSiempreLo que se activó, como un único token en snake_case: un tipo de bucle (single_message_single_line, multi_message, multi_message_outbound_flood, ...), una familia de bloqueo de bots (cloudflare_challenge, recaptcha, datadome, akamai, ...) o, en los tipos de escalado, la superficie de Auto-review que realizó la consulta (host_shell, box_shell, mcp, computer, automation_write, cloud_agent, subagent, feedback, bot_share) (abierto)
cursor.grok_bot.guardrail.actioncadenaSiemprewarned (se advirtió al Bot y siguió adelante)
cursor.grok_bot.guardrail.sourcecadenaSiempreruntime (un detector: loop_detected, bot_blocked)
cursor.grok_bot.guardrail.countintOpcionalEl recuento que activó el detector: las repeticiones que detectó una fila loop_detected. Ausente cuando el detector no cuenta nada
cursor.grok_bot.guardrail.target_hostcadenaOpcionalSolo bot_blocked: el host que rechazó al Bot, en minúsculas y sin www., puerto, ruta, consulta ni userinfo (abierto)
cursor.tool.namecadenaOpcionalSolo tipos de escalado: el id de la herramienta integrada de la llamada escalada, el mismo valor que incluyen sus filas tool_decision y tool_result
cursor.grok_bot.guardrail.resolutioncadenaOpcionalSolo pause e interrupted: resumed (la persona permitió la acción)
cursor.grok_bot.guardrail.duration_msintOpcionalSolo pause e interrupted: la espera, desde la creación de la tarjeta hasta la respuesta o su retirada. Nunca es negativa
cursor.grok_bot.decision.idcadenaOpcionalSolo tipos de escalado: el id de la tarjeta, que coincide con el decision.id de la fila tool_decision human con la que se resuelve la misma llamada (abierto)

cursor.grok_bot.tool_call.id está presente en los tipos de escalado y ausente en las detecciones, que no se atribuyen a una única llamada a herramienta. Si Auto-review rechaza una llamada sin nadie a quien consultar, no se genera ninguna tarjeta y la llamada solo incluye su tool_decision.

cursor.grok_bot.delegation

INFO (dispatched, completed con success o stopped), ERROR (completed con error), cuerpo grok_bot_delegation. Familia grok_bot_agent_actions. Trabajo que un Bot delegó a otro agente y el resultado que devuelve: un subagente en segundo plano que despachó, o un agente en la nube de Cherri Code que lanzó o al que respondió. Solo IDs y resultado; nunca la instrucción, el texto del resultado ni las acciones propias del delegado. Las llamadas a herramientas de un subagente se registran en sus propias filas grok_bot.* con initiated_by=subagent; la ejecución de un agente en la nube pertenece a la familia cloud_agents.

Cada delegación genera dos registros que comparten target_id: dispatched cuando se entregó el trabajo y completed cuando el resultado volvió al Bot. Los registros completed usan como turn.id la interacción que recibió el resultado, no la que lo despachó. cursor.grok_bot.tool_call.id es la llamada que despachó el trabajo (o la llamada de detención en un registro subagent_stop); aparece en el registro dispatched y en el registro completed de un subagente, pero no en la finalización de un agente en la nube.

AtributoTipoPresenciaValores / notas
cursor.grok_bot.delegation.directioncadenaSiempredispatched
cursor.grok_bot.delegation.kindcadenaSiemprecloud_agent_launch
cursor.grok_bot.delegation.targetcadenaSiemprecloud_agent
cursor.grok_bot.delegation.target_idcadenaSiempreEl ID del agente en la nube (bc-..., el mismo valor que la familia cloud_agents exporta como cursor.conversation.id) o el ID de conversación del subagente (sand-subagent-...). Opaco
cursor.grok_bot.delegation.outcomecadenaSolo completedsuccess
cursor.grok_bot.delegation.duration_msintOpcionalTiempo real transcurrido desde el despacho hasta el resultado en registros completed. Ausente cuando el delegado se ejecutó fuera de la interacción receptora y en todos los registros dispatched

Límites conocidos:

  • No se registran: una orientación inyectada en la interacción en curso de un agente en la nube (sin nueva ejecución), un lanzamiento o respuesta que Cherri Code rechazó, la cancelación de un agente en la nube, una ejecución iniciada por otra persona que el Bot solo observa ni el subagente de una rutina que reactiva a su padre.
  • Un subagente detenido aún puede entregar después una finalización error, por lo que un mismo target_id puede tener tanto un registro stopped como uno error.
  • El registro completed de un agente en la nube es de mejor esfuerzo: cuando el Bot vuelve a observar un agente que lanzó en una interacción anterior, la finalización puede llevar el tipo cloud_agent_launch, y un lanzamiento que se vuelve a observar a mitad de la ejecución puede dejar su dispatched sin un completed. Empareja ambos registros por target_id y ten en cuenta que puede faltar la finalización.
  • La entrega es de tipo «al menos una vez», como en todas las filas grok_bot.*: un lanzamiento, una respuesta o una finalización que se reintenta tras un fallo puede registrarse dos veces para un mismo target_id. Deduplica primero por cursor.event.id.

Contenido de las conversaciones

Familia conversation_content. Los eventos conversation.* son los únicos registros cuyo cuerpo es un payload (texto del mensaje o uno de los lados de una llamada a una herramienta MCP) en lugar de un nombre de evento constante. Enruta según el nombre del evento de registro, igual que con cualquier otra familia. cursor.conversation.user_message es una instrucción, cursor.conversation.assistant_message es una respuesta y cursor.conversation.tool_io contiene los argumentos o el resultado de una llamada a una herramienta MCP; no analices el cuerpo para distinguirlos.

Cuerpo. Texto depurado. Los mensajes tienen un límite de 32 KiB y cada lado de una llamada a herramienta, de 8 KiB. cursor.conversation.content_truncated se establece siempre que el cuerpo exportado es un prefijo del texto depurado, ya sea porque el origen superó el límite o porque la censura hizo que lo superara, y en tool_io también cuando la depuración dejó imposible de analizar un cuerpo que no superaba el límite.

Identidad. Los registros incluyen los atributos de registro comunes. cursor.conversation.id los une con los registros api.request, skill.activated, hook.execution_complete, cloud_agent.* y grok_bot.* de la conversación. Los únicos identificadores de usuario son los atributos de recurso opcionales cursor.user.*; los atributos de registro no incluyen ninguno. No dependas de cursor.request.id, de cursor.usage_event.id ni, en los registros de mensajes, de cursor.grok_bot.turn.id; tool_io incluye turn.id como atributo compartido grok_bot.*.

Superficies. Solo agentes en la nube y Bot de Grok. Las conversaciones de agentes en la nube llegan con cursor.surface=cloud_agent en el recurso. Las conversaciones del Bot de Grok llegan con cursor.surface=grok_bot, junto con los registros de acciones grok_bot.* del Bot cuando la grabación de acciones está activada. tool_io es exclusivo del Bot de Grok. Las conversaciones del IDE, la CLI y la aplicación de escritorio aún no forman parte de esta familia. Filtra o enruta según cursor.surface.

Toggles. Cada evento se envía solo si están activados la activación del equipo y su toggle en el destino: user_message requiere Prompts, assistant_message requiere Responses y tool_io requiere Tool I/O. La página de configuración describe los toggles.

Los tres eventos son de nivel INFO e incluyen estos atributos:

AtributoTipoPresenciaValores / notas
cursor.conversation.provenancecadenaSiempreserver (observado por Cherri Code). client está reservado; acéptalo.
cursor.conversation.message.idcadenaSiempreID del mensaje dentro de la conversación
cursor.conversation.turn.idcadenaOpcionalID de la interacción dentro de la conversación. Distinto de cursor.grok_bot.turn.id en los registros de mensajes; igual a él en tool_io.
cursor.conversation.content_truncatedboolSiempreVerdadero cuando el cuerpo es un prefijo del texto depurado o, en tool_io, cuando la depuración lo dejó imposible de analizar

cursor.conversation.user_message

INFO. Cuerpo: el texto depurado de una instrucción del usuario.

cursor.conversation.assistant_message

INFO. Cuerpo: el texto final depurado del assistant para la respuesta.

cursor.conversation.tool_io

INFO. Cuerpo: el JSON compacto depurado de un lado de una llamada a herramienta MCP, de 8 KiB como máximo. Se generan dos registros por cada llamada a herramienta MCP del Bot de Grok ejecutada mediante el transporte http: el registro arguments contiene el objeto JSON que envió el Bot, y el registro result contiene la respuesta del conector. Si la llamada tiene éxito, se trata del texto y el contenido estructurado de la herramienta; si falla, del mensaje de error, rechazo o denegación. Los bytes de imagen se reemplazan por su tipo MIME. Las llamadas stdio en la computadora del Bot de Grok solo informan metadatos y no generan ningún registro tool_io. Requiere activar el toggle Tool I/O del destino, además de la activación del equipo.

Ambos registros incluyen los atributos de correlación grok_bot.* compartidos (provenance, turn.id, tool_call.id, event.sequence), por lo que cursor.grok_bot.tool_call.id está presente y los une con las filas cursor.grok_bot.mcp_tool_call y cursor.grok_bot.tool_decision de la llamada. cursor.tool.name, cursor.tool.status y cursor.mcp.server.name repiten los valores de la fila de metadatos para que cada registro pueda leerse de forma independiente.

AtributoTipoPresenciaValores / notas
cursor.conversation.tool_io.directioncadenaSiemprearguments
cursor.tool.namecadenaSiempreNombre de herramienta MCP definido por el cliente (abierto)
cursor.tool.statuscadenaSiempresuccess
cursor.mcp.server.namecadenaOpcionalNombre para mostrar del servidor definido por el cliente (abierto)
cursor.grok_bot.provenancecadenaSiempreserver
cursor.grok_bot.tool_call.idcadenaSiempreClave para unir con las filas mcp_tool_call y tool_decision de la llamada
cursor.grok_bot.turn.idcadenaOpcionalMismo valor que cursor.conversation.turn.id en este registro
cursor.grok_bot.event.sequenceintOpcionalNúmero de secuencia de la llamada dentro de su interacción; no aparece en versiones anteriores del Bot de Grok

Cuando cursor.conversation.content_truncated es true, el cuerpo no se puede analizar como JSON: o bien es un prefijo del texto depurado, o bien la depuración lo dejó imposible de analizar y Cherri Code lo exportó marcado en lugar de exportar un cuerpo menos depurado. Comprueba la marca antes de analizarlo. Ambos lados pasan por el mismo depurador que el texto de los mensajes, además de una pasada basada en claves que oculta el valor de cualquier miembro o asignación JSON cuya clave haga referencia a una credencial (password, passphrase, token, api_key, secret, secret_key, access_key, authorization, cookie, private_key, credentials y compuestos como client_secret o x-api-key), sea cual sea el aspecto del valor. Los pares de encabezados también cuentan: en [{"name":"Authorization","value":"Basic ..."}], se oculta el elemento hermano value de un miembro name, key o header que figure en la lista, así como el segundo elemento de un array de dos elementos cuyo primer elemento figure en la lista (["password","..."]). Los campos de tarjeta almacenados como números ("cvc": 123) se convierten en [REDACTED: Card], y los escapes ASCII \uXXXX se decodifican antes de la depuración. Un bloque de clave privada repartido entre los elementos de un mismo array (líneas de un archivo, bloques de texto de un resultado) se oculta desde su línea BEGIN hasta su línea END; si está repartido entre campos no relacionados, no. La pasada basada en claves llega hasta un nivel dentro del JSON anidado en un valor de cadena; los documentos recodificados a mayor profundidad solo se depuran según la forma del valor. Consulta E/S de herramientas MCP para saber qué no detecta el depurador.

Identidad y uniones

ObjetivoCampoCobertura
Deduplicar registroscursor.event.idTodos los registros
Agrupar por sesión o Botcursor.conversation.idRegistros cuando está presente. Para el Bot de Grok, este valor es el identificador del Bot (su id de conversación).
Agrupar la actividad del Bot de Grok por interaccióncursor.grok_bot.turn.idRegistros grok_bot.*, registros skill.activated del Bot, registros conversation.tool_io y registros api.request / api.error con cursor.surface=grok_bot, cuando está presente. No dependas de él en conversation.user_message ni en conversation.assistant_message.
Ordenar las acciones de una interacción del Botcursor.grok_bot.event.sequenceRegistros grok_bot.* y conversation.tool_io de las versiones actuales del Bot de Grok. Ordena por este campo; no esperes que sea consecutivo
Agrupar las filas de una llamada a herramienta del Botcursor.grok_bot.tool_call.idtool_result, tool_decision, mcp_tool_call, computer_use_session, file_transfer, message_delivery, delegation, escalados de medidas de protección, skill.activated del Bot y, con la E/S de herramientas activada, ambos lados de conversation.tool_io
Unir una solicitud de aprobación con su respuestacursor.grok_bot.decision.idtool_decision y las filas guardrail tool_escalation / pause / interrupted de la misma llamada
Agregar las acciones de un subagente a su agente principalcursor.grok_bot.root_turn.idRegistros grok_bot.* con procedencia client; cursor.grok_bot.subagent.id identifica al subagente
Adjuntar instrucciones y respuestas a una sesióncursor.conversation.idRegistros conversation.* (agentes en la nube y Bot de Grok), solo con la activación de conversation_content
Agrupar instrucciones y respuestas por interaccióncursor.conversation.turn.idRegistros conversation.* cuando está presente
Agrupar por usuarioAtributo de recurso cursor.user.account_idRegistros y métricas cuando está presente. Se une con id en la respuesta de GET /teams/members de la Admin API. cursor.user.email, en el mismo recurso, identifica directamente al miembro.
Conciliar la facturacióncursor.usage_event.idRegistros api.request, api.error y api.correction

Los registros exportados no incluyen los campos trace_id ni span_id de OpenTelemetry. Usa cursor.conversation.id y cursor.grok_bot.turn.id para correlacionar el Bot y la interacción. Las métricas no incluyen ids de correlación; usa los registros api.request para obtener los totales de tokens por conversación.

Consulta Unir sesiones en la página de configuración para ver ejemplos prácticos.

Semántica de entrega

  • Registros se entregan al menos una vez. Los fallos transitorios se resuelven automáticamente durante unos 7 días; se deduplican por event.id. Los rechazos definitivos (4xx persistentes, payloads incorrectos) no se reenvían.
  • Métricas se entregan como máximo una vez. Las solicitudes de métricas fallidas no se reintentan ni se reenvían.
  • Sin garantía de orden. Las correcciones pueden llegar después de las solicitudes que corrigen; ordene por marca de tiempo del registro.
  • Se respeta el éxito parcial de OTLP. Los elementos rechazados no se reenvían.
  • No hay carga retroactiva anterior a la activación del destino. La retención en el origen antes de la exportación también es de unos 7 días (independiente de la ventana de reintentos de entrega).