Skip to main content

Command Palette

Search for a command to run...

チームとEnterprise

OpenTelemetry Export ワイヤーリファレンス

OpenTelemetry Exportの補足資料。すべてのメトリクス、ログイベント、属性、列挙値、有無ルールを含む完全なワイヤー仕様です。

この仕様には追加のみが行われます。未知の属性、イベント、列挙値を許容してください。名前変更や削除は明示的に通知します。

トランスポートとスコープ

  • OTLP/HTTP バイナリ protobuf (application/x-protobuf) 、POST
  • エンドポイント: <base>/v1/metrics および <base>/v1/logs
  • スコープ: cursor.telemetry / 0.1.0

リソース属性

(チーム、ユーザー、Surface、エントリポイント、Surfaceバージョン) の組み合わせごとに1つのリソース。

属性型有無値 / 注記
service.namestring常に定数 cursor
service.versionstring任意送信元がデスクトップ/CLIの場合はクライアントのバージョン。cloud_agent / bugbot では通常はありません
cursor.team.idint常にチームID
cursor.surfacestring常にunspecified
cursor.entrypointstring常にunspecified
cursor.user.idint任意送信元にユーザーIDがある場合の、不透明なチームスコープのユーザーID。cloud_agent.* ログでは実行の所有者を表します。チーム API キーまたはサービスアカウントで開始された実行には所有者が存在せず、ユーザー属性も含まれません。存在を必須としないでください。
cursor.user.account_idstring任意メンバーの user_... ID。Admin API の GET /teams/members が id として返す値です。レコードにはこの値と cursor.user.id の両方が含まれるか、どちらも含まれないかのいずれかです。
cursor.user.emailstring任意メンバーのメールアドレス。cursor.user.id が存在し、かつメンバーにメールアドレスが登録されている場合に含まれます。プライバシーモード (Legacy) のチームではエクスポートされません。存在を必須としないでください。

ファミリー

ファミリー ID はチーム設定のトグルに対応しています。新しい送信先では、conversation_content を除くすべてのファミリーがデフォルトで有効です。conversation_content は、チームがオプトインし、かつ送信先で種類ごとのトグルを有効にするまで無効のままです (会話コンテンツ を参照)。

ファミリー IDシグナルデフォルト対象
model_usageメトリクス + ログ有効token.usage、cost.usage;api.request、api.error、api.correction
tool_callsメトリクス有効tool.calls
skills_hooks_pluginsログ有効skill.activated (Cherri Bot を含むすべての Surface)、hook.execution_complete、plugin.installed
cloud_agentsログ有効cloud_agent.pull_request、cloud_agent.setup、cloud_agent.artifact、cloud_agent.mcp_auth_error
grok_bot_agent_actionsログ有効 (アクション記録が必要)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_contentログ無効 (チームのオプトイン + 送信先の種類ごとのトグル)conversation.user_message、conversation.assistant_message、conversation.tool_io

grok_bot_agent_actions ファミリー、および Bot が送信する skill.activated には、アクション記録のデータが含まれます。これらのデータは、チーム管理者がダッシュボードの Cherri Bot ページで アクション記録 を有効にした場合にのみ送信されます。プライバシーモード (Legacy) では、記録は強制的に無効になります。

メトリクス

すべてのメトリクスは、単調増加するdeltaの合計です。メトリクスのデータポイントには相関 ID は含まれず、相関 ID はログにのみ記録されます。

メトリクスは、シリーズごとの delta の合計として扱います。シリーズは、リソース、メトリクス名、および完全に一致するデータポイント属性セットで定義されます。同じシリーズのウィンドウは、flush をまたいで重複することがあります。

cursor.token.usage

単位:{token}。モデルファミリー:model_usage。

属性型有無値 / 注記
cursor.token.typestring常にinputoutputcache_readcache_creation
cursor.model.namestring任意ルーティング済みintentの集約後にリクエストされた公開モデル (auto: は Auto、thinking: は Thinking、pro: は Pro、premium: は Premium。それ以外はそのまま) 。Bugbotの場合、またはソースにモデルがなかった場合は付与されません。
cursor.api.statusstring任意successerroredaborted
cursor.api.billablebool任意

cursor.tool.calls

単位は {call}。ファミリーは tool_calls。完了したツール呼び出しごとに値 1。

属性型有無値 / 注記
cursor.tool.kindstring常にbuiltin
cursor.tool.namestring常に組み込み ID (例: read、shell) または顧客の MCP ツール名 (open)
cursor.tool.statusstring常にsuccess
cursor.mcp.server.namestringMCP のみ顧客定義のサーバー表示名 (open)

cursor.cost.usage

単位: USD (double) 。ファミリー: model_usage。イベント発生時点におけるベストエフォートの推定コストであり、請求書ではありません。cursor.api.correction の対象となります。BYOK (Bring Your Own Key) では、これはCherri Codeトークンレートのみであり、provider の利用額は含まれません。

属性型有無値 / 注記
cursor.model.namestring任意token.usage と同じ集約ルール

ログイベント

重要度: INFO=9、WARN=13、ERROR=17。

共通ログ属性

属性型有無注記
cursor.event.idstring常に重複排除キー。 不透明です。再試行、ワーカーの再起動、Cherri Code の Kafka リプレイをまたいで決定論的です。プレフィックス customer-telemetry:v1:... は安定していますが、文字列全体を不透明なものとして扱ってください。
cursor.source_event.idstring常に不透明な内部ソース ID。複数のシグナルが同じ値を共有する場合があります。
cursor.request.idstring任意api.request、api.error、skill.activated (Bot による有効化を除く)、hook.execution_complete、plugin.installed にのみ含まれます。api.correction、cloud_agent.*、grok_bot.* には含まれません。conversation.* では存在を前提にしないでください。
cursor.conversation.idstring任意IDE/CLI: composer UUID。Cloud agent: 顧客に表示される bc-... エージェント ID。Cherri Bot (grok_bot.*、および cursor.surface=grok_bot を持つすべてのログ) : Bot の識別子。この値が Bot の会話 ID となります。api、skill/hook、cloud_agent、grok_bot、conversation ログをまたいでセッションを再構築するための結合キーです。
cursor.usage_event.idstring任意api.request / api.error / api.correction のみ。Cherri Code の利用および請求エクスポートと照合するためのリクエスト単位のキーです。

cursor.api.request

INFO、本文 api_request。ファミリー model_usage。

属性型有無注記
cursor.api.request.input_tokensint常に
cursor.api.request.output_tokensint常に
cursor.api.request.cache_read_tokensint常に
cursor.api.request.cache_creation_tokensint常に
cursor.model.namestring任意
cursor.api.billablebool任意
cursor.grok_bot.turn.idstringgrok_bot サーフェスのみcursor.request.id と同じ値で、モデルを呼び出した Bot のターンを示します。このターンの grok_bot.* アクションレコードと結合して使用します。ターン外で行われた Cherri Bot のモデル呼び出し (アバター生成など) でもここに ID が入りますが、この ID はどのアクションレコードとも結合できません。他のサーフェスでは付与されません

cursor.api.error

ERROR、本文はapi_error。ファミリーはmodel_usage。生のエラーメッセージは含めません。低カーディナリティのkindおよびstatus属性は予定されています。現時点ではこれらに依存しないでください。

属性型有無注記
cursor.model.namestring任意
cursor.api.billablebool任意
cursor.grok_bot.turn.idstringgrok_bot サーフェスのみcursor.request.idと同じ値。api.requestを参照してください

cursor.api.correction

WARN、本文 api_correction_<kind>。ファミリーはmodel_usage。請求確定: この利用イベントは後から請求対象外となりました。cursor.usage_event.idで結合し、請求対象からグループ全体を除外します。意図的にcursor.model.nameを含みません。

属性型有無値
cursor.api.correction.kindstring常にnot_billed_errored

cursor.skill.activated

INFO、本文 skill_activated。ファミリー skills_hooks_plugins。

属性型有無値 / 注記
cursor.skill.namestring常にユーザー作成 (open)
cursor.skill.triggerstring常にagent_read
cursor.skill.sourcestring常にunspecified
cursor.plugin.namestring任意スキルがプラグイン由来の場合。現時点では、Cherri Bot によるアクティベーションではエクスポートされません

Bot が SKILL.md を読み込んだ場合も、cursor.surface=grok_bot 付きで同じイベントがエクスポートされます。レコードには 共通の grok_bot.* 属性 が含まれるため、同じターンの他のアクションと結合できます。cursor.skill.name はスキルのフォルダー slug、cursor.skill.trigger は agent_read または skill_name_in_prompt です (/ や @ で呼び出されたスキルは現在まだ記録されません)。cursor.skill.source は、Cherri Code 管理のスキルでは builtin、インストール済みプラグインのスキルでは plugin、Bot 独自のスキルでは user となり、それ以外は他の Surface と同じ基準で分類されます。cursor.grok_bot.tool_call.id はスキルをアクティベートした Read の ID で、対応する tool_result 行と結合できます。Bot によるアクティベーションには cursor.conversation.id が含まれ、cursor.request.id は含まれません。また、送信されるのはアクション記録が有効な場合のみです。

cursor.hook.execution_complete

INFO (failed / timeout の場合は ERROR) 、本文は hook_execution_complete。ファミリーは skills_hooks_plugins。

属性型有無値 / 注記
cursor.hook.namestring常にユーザー設定 (open)
cursor.hook.typestring常にpre_tool_use
cursor.hook.outcomestring常にsuccess
cursor.hook.duration_msint常に
cursor.plugin.namestring任意フックがプラグイン由来の場合

cursor.plugin.installed

INFO、本文 は plugin_installed。ファミリーは skills_hooks_plugins。conversation.id は非対応 (インストールは会話スコープではないため) 。

属性型有無値 / 注記
cursor.plugin.namestring常に開く
cursor.plugin.scopestring常にunspecified

cursor.cloud_agent.pull_request

INFO (opened) / WARN (creation_failed) 、本文 cloud_agent_pull_request_<kind>。ファミリーは cloud_agents。conversation.id = bc-...。

属性型有無値 / 注記
cursor.cloud_agent.pull_request.kindstring常にopenedcreation_failed
cursor.cloud_agent.pull_request.numberintopened のみ
cursor.cloud_agent.pull_request.draftboolopened のみ

creation_failed は現在使用されています。opened は、生成元で段階的に展開されている間、一部のフィールドが欠けている場合があります。

cursor.cloud_agent.setup

INFO (started / completed) / ERROR (failed) 、本文 cloud_agent_setup_<kind>。ファミリー cloud_agents。conversation.id = bc-...。

属性型有無値 / 注記
cursor.cloud_agent.setup.kindstring常にstarted
cursor.cloud_agent.setup.duration_msint終了種別の場合 (存在する場合)completed / failed
cursor.cloud_agent.setup.reasonstringfailed のみ自由形式 (例: install_command_failed)

cursor.cloud_agent.artifact

INFO、本文は cloud_agent_artifact_created。ファミリーは cloud_agents。conversation.id = bc-...。

属性型有無値 / 注記
cursor.cloud_agent.artifact.file_namestring常に開く
cursor.cloud_agent.artifact.content_typestring任意MIME

cursor.cloud_agent.mcp_auth_error

ERROR、本文 cloud_agent_mcp_auth_error。ファミリー cloud_agents。conversation.id = bc-...。

接続したMCPサーバーが実行時の認証情報を拒否しました。実行は継続されましたが、そのサーバーへのツール呼び出しは失敗しました。連携を修正できるのはあなただけであるため、ERRORです。自動化やCloud AgentsがMCPサーバーをサイレントに失ったことを検出できるよう、このエラーにアラートを設定してください。

属性型有無値 / 注記
cursor.mcp.server.namestring常に顧客定義のサーバー表示名 (open) 。例: github。cursor.tool.callsデータポイント属性と同じ値空間です。

共通の grok_bot.* 属性

Bot 自体は、すべての grok_bot.* レコードの cursor.conversation.id で識別され、その値は Bot の会話 ID です。サブエージェントがアクションを実行した場合は、cursor.grok_bot.subagent.id でそのサブエージェントが示されます。grok_bot.* イベントは、アクション記録で記録された Bot のアクションを伝達します。ファミリーは grok_bot_agent_actions です。すべてのレコードに cursor.surface=grok_bot が含まれます。

各イベントはアクションに関するメタデータであり、アクションの内容そのものは含まれません。ツールの引数と結果、ファイルパスとファイル名、メッセージ本文と受信者、認証情報、カード情報、Auto-review の classifier の判断理由は、これらのイベントでは一切エクスポートされません。MCP の引数と結果は、オプトインの cursor.conversation.tool_io レコードとしてのみ送信されます。例外はイベントごとに明記されており、シェルコマンドのテキスト(シークレットを除去し、最大 8 KiB)、正規化されたブラウザの URL とページタイトル、ホスト名のみが該当します。すべての自由記述フィールドは、collector に届く前に、認証情報に似た文字列、支払いカード番号、OAuth トークンがスクラブされます。

各イベントには、以下の属性も含まれます:

属性型有無値 / 注記
cursor.grok_bot.provenance文字列常にclient(Bot のコンピューターが報告。ベストエフォート)
cursor.grok_bot.turn.id文字列任意アクションを実行した Bot のターン(またはサブエージェントのリクエスト)のリクエスト ID。同じ値が、そのターンの api.request および api.error レコードにも cursor.grok_bot.turn.id として含まれます
cursor.grok_bot.root_turn.id文字列任意アクションの起点となったユーザー向けターンのリクエスト ID。サブエージェント以外では turn.id と同じ値です。サブエージェントのアクションでは、そのサブエージェントを起動したターンになります。provenance が server の場合は含まれません
cursor.grok_bot.subagent.id文字列任意アクションを実行したサブエージェントの会話 ID。トップレベルの Bot が実行した場合、および provenance が server の場合は含まれません
cursor.grok_bot.box.id文字列任意Cherri Bot コンピューターの ID。provenance が server の場合は含まれません
cursor.grok_bot.event.sequenceint任意turn.id をキーとする、ターンごとの単調増加シーケンス番号。ターン内のアクションは、クライアントの時刻ではなくこの値で並べ替えてください。番号は連続しません。承認待ちの後に再開したターンは最後の番号より大きい値から続き、リトライは独自のブロックから続くため、リトライされた行も最初の実行より後に並びます。古いバージョンの Cherri Bot では含まれません
cursor.grok_bot.tool_call.id文字列任意アクションのツール呼び出し ID。1 つのツール呼び出しで生成されたすべての行(tool_result、tool_decision の行、mcp_tool_call などのツール固有の行)に同じ値が含まれるため、この値で結合できます。アクションがツール呼び出しに紐づかない場合(ブラウザのナビゲーション、シェルコマンドなど)は含まれません
cursor.grok_bot.initiated_by文字列任意アクションが属するターンの開始者: user(入力されたメッセージまたは音声通話)

cursor.grok_bot.mcp_tool_call

INFO (failure ステータスの場合は ERROR) 、本文 は grok_bot_mcp_tool_call。ファミリー は grok_bot_agent_actions。Bot が実行した 1 回の MCP ツール呼び出しを表します。この行にツールの引数や結果が含まれることはありません。http 呼び出しの場合、ツール I/O を有効にしているチームは、これらを 2 件の cursor.conversation.tool_io レコードとして受信します。これらのレコードは cursor.grok_bot.tool_call.id でこの行と結合されます。

属性型有無値 / 備考
cursor.tool.name文字列常に顧客定義の MCP ツール名 (open)
cursor.tool.status文字列常にsuccess
cursor.grok_bot.mcp.transport文字列常にhttp (サーバー側で観測)
cursor.grok_bot.mcp.duration_msint常に
cursor.mcp.server.name文字列任意顧客定義のサーバー表示名 (open)

cursor.grok_bot.tool_call.id はすべての MCP 呼び出しに含まれます。Bot のコンピューター上のブラウザツールを含むコネクタ呼び出しは、tool_result として記録されることはなく必ずここに記録されるため、各ツール呼び出しは 1 回だけ記録されます。

cursor.grok_bot.shell_command

INFO (ブロック時は WARN) 、本文 は grok_bot_shell_command。ファミリー は grok_bot_agent_actions。Bot が実行した、または実行をブロックされたシェルコマンド。レコードはコマンドの完了時に書き込まれますが、タイムスタンプには発行時刻が保持されます。そのため、長時間実行されるコマンドでは、レコードがタイムスタンプよりかなり遅れて届きます。

属性型有無値 / 注記
cursor.grok_bot.shell.commandstring常にシークレットを除去したコマンドテキスト、最大 8 KiB (open)
cursor.grok_bot.shell.command_truncatedbool常に元のコマンドが上限を超えた場合に true
cursor.grok_bot.shell.kindstring常にforeground
cursor.grok_bot.shell.targetstring常にbox (Cherri Bot computer)
cursor.grok_bot.shell.allowedbool常にシェルポリシーの判定
cursor.grok_bot.shell.blocked_reasonstring任意ブロック時のポリシー上の理由。シークレットを除去 (open)
cursor.grok_bot.shell.classification_reasonsstring[]任意最大 10 件のポリシー分類理由。シークレットを除去 (open)
cursor.grok_bot.shell.machine_idstring任意user_machine ターゲットのみ:コマンドが実行された登録済みユーザーマシン (open)。記録されるのは、ターン開始時に登録されていたマシンのみです
cursor.grok_bot.shell.exit_codeint任意プロセスの終了コード。シグナルによる強制終了または中断時は -1。background コマンドの場合や、コマンドが終了コードを返さなかった場合 (接続切断、実行前の拒否) は含まれません
cursor.grok_bot.shell.duration_msint任意発行から完了までの実時間。コンピューターへの接続時間と、プロセス開始前の待機時間を含みます。すべての foreground レコードに含まれ、background には含まれません

cursor.grok_bot.browser_navigation

INFO、本文 は grok_bot_browser_navigation。ファミリーは grok_bot_agent_actions。conversation.id は Bot の識別子です。

属性型有無値 / 注記
cursor.grok_bot.browser.url文字列常に正規化された scheme://host/path (open) 。非階層型スキームはエクスポートされません
cursor.grok_bot.browser.page_title文字列任意シークレットを除去した (open)

cursor.grok_bot.computer_use_session

INFO、本文 は grok_bot_computer_use_session。ファミリーは grok_bot_agent_actions。1 回の computer-use サブエージェントセッションの概要で、記録されるのは回数と実時間のみです。座標、入力されたテキスト、スクリーンショットは含まれません。cursor.grok_bot.turn.id はサブエージェントを呼び出した親ターン、cursor.grok_bot.subagent.id はサブエージェント自体、cursor.grok_bot.tool_call.id はその呼び出しを表し、cursor.grok_bot.initiated_by は常に subagent です。

属性型有無値 / 注記
cursor.grok_bot.computer_use.action_countint常に
cursor.grok_bot.computer_use.duration_msint常に
cursor.grok_bot.computer_use.screenshot_countint常に
cursor.grok_bot.computer_use.action_counts.<kind>int任意回数が 1 以上のアクション種別ごとに属性が 1 つ設定されます。<kind> は click、drag、key、mouse_move、screenshot、scroll、type、wait のいずれか

cursor.grok_bot.tool_result

INFO (success / cancelled) 、WARN (denied) 、ERROR (error) 、body grok_bot_tool_result。ファミリー grok_bot_agent_actions。Bot が実行し、完了した組み込みツール呼び出し 1 件 (read、web_search、send_to_user、task、shell など) 。すべての組み込みツールがこの行を生成するため、Bot が呼び出せるツールはすべて記録されます。コネクタ (MCP) の呼び出しは mcp_tool_call 行として記録され、ここには表示されません。

cursor.grok_bot.tool_call.id を使うと、この行を同じ呼び出しの tool_decision 行と結合できます。モデルのストリームで一時的な障害が発生して呼び出しが再実行された場合、1 つの id に tool_result 行が 2 件含まれることがあります。呼び出し数を数える際は、重複を除いた id の数を使用してください。

属性型有無値 / 備考
cursor.tool.name文字列常に組み込みツールの id (小文字) 。cursor.tool.calls の組み込み tool.name ディメンションと同じ値空間 (read、shell、web_search など)
cursor.grok_bot.tool_result.outcome文字列常にsuccess (ツールが結果を返した。拒否をテキストとしてモデルに返したツールも含む。アクションが実行されたかどうかは、その呼び出しの tool_decision 行で確認できる)
cursor.grok_bot.tool_result.duration_msint常に
cursor.grok_bot.tool_result.error_category文字列任意outcome が success 以外の場合の理由コード:invalid_args、user_rejected、timeout、provider_error、hook_denied、または TimeoutError などのエラークラス名 (オープン)
cursor.grok_bot.tool_result.target_host文字列任意サイトを対象とするツールが操作したホスト名のみ。list_credentials では認証情報の検索対象となったサイト、request_virtual_card では加盟店。小文字で、www.、ポート、パス、クエリ、userinfo は含まない。その他のツールの場合、呼び出しでサイトが指定されなかった場合、呼び出しが実行されなかった場合は含まれない (オープン)

outcome は「アクションが実行されたかどうか」ではなく、「呼び出しがどのように返ったか」を示すものとして解釈してください。シェル、ブラウザおよびコンピューターのアクション、ユーザーが拒否したローカルツールの確認では、拒否は denied として報告され、error_category は user_rejected になります。メール、ルーチンの書き込み、コネクタのファイル転送、サブエージェントの起動、Cloud Agent のアクションでは、拒否がテキストとしてモデルに返されるため、tool_result は success となり、拒否は tool_decision 行に記録されます。

cursor.grok_bot.tool_decision

INFO (allowed / held) 、WARN (denied / timed_out) 、本文 grok_bot_tool_decision。ファミリー grok_bot_agent_actions。Bot のツール呼び出しを実行してよいかどうかについての 1 件の判断を表し、誰が、どの承認モードで判断し、その結果が何だったかを記録します。1 回の呼び出しに複数の判断が含まれることがあり (Auto-review が自動許可を拒否し、その後ユーザーがカードに回答する場合など) 、判断ごとに個別のレコードになります。これらのレコードは cursor.grok_bot.tool_call.id をキーとして、呼び出しの tool_result、mcp_tool_call、または computer_use_session の行と結合できます。classifier の判断理由、カードの文面、引数はここには含まれません。

属性型有無値 / 備考
cursor.grok_bot.decision.id文字列常に判断が行われた時点 (ユーザーがカードを目にする前) に発行される ID。human の判断では、ユーザーが回答したカードまたは権限リクエストの ID で、同じ呼び出しの guardrail エスカレーション行が持つ値と一致します (未確定)
cursor.tool.name文字列常に組み込みツールの ID (小文字) 。呼び出しの tool_result と同じ値です。コネクタ呼び出しの判断では mcp となり、対応する mcp_tool_call 行にはサーバー側のツール名が入ります
cursor.grok_bot.decision.source文字列常にhuman
cursor.grok_bot.decision.approval_mode文字列常にauto_allow
cursor.grok_bot.decision.outcome文字列常にallowed
cursor.grok_bot.decision.rule_id文字列任意判断を下した Auto-review ルールの不透明な ID。classifier が判定をルールに紐付けるまでは含まれません (未確定)

各ソースの意味:

  • policy は、あらゆる surface (shell、コネクタ呼び出し、メール、ルーチンの書き込み、Cloud Agent およびサブエージェントの起動) で適用されたすべての Auto-review 分類 (allowed または denied) です。classifier が失敗した場合や期限内に応答しなかった場合は policy の denied となり、分類を行わずに呼び出しをユーザーに回すレビュールールも同様に扱われます。
  • human は、Auto-review カードの最終結果 (classifier がエスカレーションした場合は approval_mode が auto_review、製品フィードバック、メール受信トレイの取得、電話の発信、Chrome Cookie のインポートなど、surface が常に確認を求める場合は ask_human) 、またはユーザー自身のコンピューター上で回答されたローカルツールの権限リクエスト (local_tool_permission) です。「常に許可」「常に拒否」の回答も、1 回限りの回答と同様にそれぞれ allowed、denied として記録されます。
  • hook は、ツール実行前フックによる拒否です。
  • automatic は、どのゲートも関与しなかった呼び出しです。これにより、確定したその他の組み込みツール呼び出しには必ず 1 つ以上の判断が含まれます。ただし、次の 3 種類の呼び出しは判断を持ちません。1 つ目は、ゲートが実行される前にツール自体が拒否した呼び出し (その tool_result は denied) です。2 つ目は、ターン終了後にユーザーが回答するカード (認証情報の入力リクエスト、シークレットのリクエスト、バーチャルカードのリクエスト) で、回答が後のターンで届くためです。3 つ目は、いずれかのゲートが判断する前にキャンセルされた呼び出しで、cancelled の呼び出しには中断される前に記録された許可と保留のみが含まれるためです。なお、バーチャルカードのリクエストは自身の呼び出しの内部からターンを終了させるため、その tool_result は cancelled になります。

Auto-review が拒否し、その後ユーザーが回答した呼び出しには、policy の denied と human の 2 行が、event.sequence の順に含まれます。承認者を示す属性はありません。Bot のカードに回答できるのはその所有者だけであり、所有者はレコードの cursor.user.id で示されます。

cursor.grok_bot.file_transfer

INFO (success)、WARN (denied)、ERROR (error)、本文 grok_bot_file_transfer。ファミリー grok_bot_agent_actions。Bot が自身のコンピューターと別の endpoint の間で試みた 1 回のファイル移動を表します。相手側は、ユーザーのマシン、接続済みの Google Drive、OneDrive、Gmail アカウントのいずれかです。また、ユーザーのマシン上のファイルを Bot のコンテキストへ直接読み込む操作も含まれます。記録されるのはメタデータのみで、方向、相手側、移動したバイト数、最終的な結果が含まれます。パス、ファイル名、内容はエクスポートされません。Bot 自身のコンピューター上のファイルの読み取りは tool_result 行として記録され、このイベントには含まれません。cursor.grok_bot.tool_call.id を使うと、この行を呼び出しの tool_result と結合できます。拒否された移動の場合は、その tool_decision とも結合できます。

属性型有無値 / 備考
cursor.grok_bot.file.direction文字列常にBot のコンピューターから見た方向: download (バイトがコンピューターに到着)
cursor.grok_bot.file.target文字列常にuser_machine (ユーザーのコンピューター)
cursor.grok_bot.file.outcome文字列常にsuccess
cursor.grok_bot.file.bytesint任意移動したバイト数。移動が完了した場合に存在 (空のファイルでは 0 をエクスポート)。read の場合は Bot に渡されたバイト数を表すため、範囲指定の読み取りではファイルサイズではなく出力のサイズを数える
cursor.grok_bot.file.error_category文字列任意outcome が error の場合のコード化された理由: source_missing、too_large、read_failed、write_failed、invalid_file、needs_auth や not_found などのコネクタの結果、ECONNRESET などの errno、またはエラークラス名。常に単一のトークンで、メッセージは含まない (オープン)
cursor.grok_bot.file.machine_id文字列任意target が user_machine の場合の相手側のユーザーマシン: Bot のマシン一覧が報告する不透明な ID (オープン)。ターン開始時に登録済みのマシンのみが対象

cursor.grok_bot.message_delivery

INFO (sent / held) 、ERROR (failed) 、本文 grok_bot_message_delivery。ファミリー grok_bot_agent_actions。Bot から送信された 1 件のアウトバウンドメッセージを表します。送信先は、Cherri Bot チャット内のそのユーザー、ユーザーの別の Bot、Bot の呼び出し元となった Slack または Discord の会話、外部のメール受信者、ユーザーの Mac のメッセージアプリ、またはユーザー自身が送信・破棄する下書きカードのいずれかです。この行にはメッセージの送信先と到達の成否が記録されますが、メッセージの内容や宛先の名前は一切記録されません。本文、件名、受信者、添付ファイル名、長さも含まれません。cursor.grok_bot.tool_call.id を使うと、この行を同じ送信呼び出しの tool_result と結合できます。

属性型有無値 / 備考
cursor.grok_bot.message_delivery.destination_type文字列常にuser (Bot 自身のユーザー。チャット内または音声通話中)
cursor.grok_bot.message_delivery.destination_id文字列任意agent:送信先 Bot の不透明な ID。Bot が ID を解決できなかった場合は含まれません。channel:<platform>:<chat>[:<thread>] (例:slack:C0123ABC:1699999999.000100) の SHA-256 の先頭 16 進数 32 文字。これにより、同じ会話宛てのすべての行は、手元のアドレスから計算できる同一の値を持ち、アドレス自体が外部に送信されることはありません。user、draft、email、apple_messages では含まれないため、メールアドレス、電話番号、チャット ID はハッシュ化の有無にかかわらずエクスポートされません (open)
cursor.grok_bot.message_delivery.result文字列常にsent
cursor.grok_bot.message_delivery.failure_category文字列任意result が sent 以外の場合の理由コード。awaiting_user、blocked、target_not_found、forbidden、no_inbox、sender_not_owned、not_approved、route_unverified、declined、permission_denied、エラークラス名など (open)
cursor.conversation.message.id文字列任意存在する場合、user、channel、draft の行における送信メッセージの ID。そのファミリーのメッセージレコードと同じ形式 (<sessionId>/g<generation>/<entryId>、例:g0/t3s1) のため、配信行をそのファミリーの assistant_message レコードと単一のキーで結合できます。agent、email、apple_messages の行には含まれません

cursor.grok_bot.routine_run

INFO (success / cancelled) 、ERROR (error) 、本文 grok_bot_routine_run。ファミリー grok_bot_agent_actions。Bot によるルーチン実行 1 件の完了を表します。どのルーチンがなぜ起動し、どのように終了し、どれだけ時間がかかったかを記録します。この行は Cherri Code が実行を終了する時点で記録するため (server 由来) 、Bot's computer が監視していたかどうかにかかわらず実行は記録されます。また、この行には box.id、event.sequence、tool_call.id は含まれません。cursor.grok_bot.initiated_by=routine と cursor.entrypoint=automation は常に含まれます。ルーチンのプロンプト、名前、ターンのテキストは一切含まれません。

cursor.grok_bot.turn.id は実行が行われたターンを示します。そのため、その実行自体の tool_result、shell_command、mcp_tool_call の行はこの値で結合できます。ルーチンのサブエージェントとして実行された場合や、ターンが計画される前に失敗した場合は、turn.id は含まれません。

属性型有無値 / 備考
cursor.grok_bot.routine.id文字列常にルーチンの安定した ID (不透明)
cursor.grok_bot.routine_run.id文字列常に実行の ID。ルーチンの実行履歴に表示される値と同じ (不透明)
cursor.grok_bot.routine_run.trigger文字列常にschedule (cron スケジュールにより起動)
cursor.grok_bot.routine_run.outcome文字列常にsuccess (ターンが完了した、またはユーザーの応答待ちで一時停止した)
cursor.grok_bot.routine_run.duration_msint常に起動から確定までの実経過時間

承認待ちで一時停止し、再開後のターンで確定した実行や、ターン開始前に失敗した実行は記録されません。アクション記録はチーム機能のため、個人 (チームに属さない) 所有者の実行は、他のすべての Bot アクションと同様にスキップされます。

cursor.grok_bot.guardrail

INFO (continued) 、WARN (warned / stopped) 、本文 grok_bot_guardrail。ファミリー grok_bot_agent_actions。Bot のターンにガードレールが介入したことを示します。対象となるのは、ループ検出器が出力やツール呼び出しの繰り返しを検知した場合、サイトのボット対策が Bot のブラウザを拒否した場合、または Auto-review がツール呼び出しを止めて人に確認を求め、その後に待機が発生した場合です。含まれるのはコード化されたフィールドのみで、classifier の判断理由やカードの文言はエクスポートされません。判断そのもの (Auto-review による拒否、人の回答) は tool_decision 行として記録されるため、ここで重複して記録されることはありません。エスカレーション行は cursor.grok_bot.decision.id でその行と結合します。

ガードレールによってターンが変化した場合 (促し、停止、拒否または無回答で終わった待機) は WARN、観測のみの場合やターンが継続した場合は INFO として記録されます。検知 1 回につき 1 行です。ウォールは 1 エピソードにつき 1 回としてカウントされるため、再読み込みしても同じウォールにとどまっているページは 1 行として記録されます。

エスカレーションは、1 枚のカードにつき 2 行が発生順に記録されます。tool_escalation 行は確認依頼を表し、確認対象の呼び出しが人の関与なしには実行できないため、カードが表示されたことを示します。pause 行は待機の終了を表し、人がアクションを許可した (resumed) 、拒否した (denied) 、またはカードが期限切れになるか取り下げられるまで誰も回答しなかった (abandoned) ことを示します。人が回答する代わりにターンを停止またはリダイレクトしたことで待機が終了した場合、2 行目は interrupted になります。両方の行には、エスカレーションされたツールの cursor.tool.name、呼び出しの cursor.grok_bot.tool_call.id、およびカードの ID である cursor.grok_bot.decision.id が含まれます。この値は、同じ呼び出しの human tool_decision 行が持つ値と同一のため、確認依頼・待機・回答を 1 つのキーで結合できます。

属性型有無値 / 備考
cursor.grok_bot.guardrail.kindstring常にloop_detected
cursor.grok_bot.guardrail.detectorstring常に何が検出されたかを示す単一の snake_case トークン:ループの種類 (single_message_single_line、multi_message、multi_message_outbound_flood など) 、Bot ブロックのファミリー (cloudflare_challenge、recaptcha、datadome、akamai など) 、またはエスカレーション種別の場合は問い合わせ元の Auto-review の surface (host_shell、box_shell、mcp、computer、automation_write、cloud_agent、subagent、feedback、bot_share) (オープン)
cursor.grok_bot.guardrail.actionstring常にwarned (Bot に注意が促され、処理は継続した)
cursor.grok_bot.guardrail.sourcestring常にruntime (検出器:loop_detected、bot_blocked)
cursor.grok_bot.guardrail.countint任意検出器が作動した時点のカウント:loop_detected 行で検出された繰り返し回数。検出器がカウントを行わない場合は含まれない
cursor.grok_bot.guardrail.target_hoststring任意bot_blocked のみ:Bot を拒否したホスト。小文字に変換され、www.、ポート、パス、クエリ、userinfo は除去される (オープン)
cursor.tool.namestring任意エスカレーション種別のみ:エスカレーションされた呼び出しの組み込みツール ID。対応する tool_decision 行および tool_result 行と同じ値
cursor.grok_bot.guardrail.resolutionstring任意pause と interrupted のみ:resumed (ユーザーがアクションを許可した)
cursor.grok_bot.guardrail.duration_msint任意pause と interrupted のみ:カードの作成から、応答またはカードの破棄までの待機時間。負の値にはならない
cursor.grok_bot.decision.idstring任意エスカレーション種別のみ:カードの ID。同じ呼び出しの決着時に記録される human の tool_decision 行の decision.id と一致する (オープン)

cursor.grok_bot.tool_call.id はエスカレーション種別では含まれますが、検出では含まれません (検出は特定のツール呼び出しに紐づかないため) 。問い合わせる相手がいない状態で Auto-review が拒否した呼び出しでは、カードは発行されず、tool_decision のみが記録されます。

cursor.grok_bot.delegation

INFO (dispatched、および success または stopped を伴う completed) 、ERROR (error を伴う completed) 、本文 grok_bot_delegation。ファミリー grok_bot_agent_actions。Bot が別のエージェントに引き渡した作業と、その結果の返却を表します。対象は、Bot がディスパッチしたバックグラウンドのサブエージェント、または Bot が起動もしくは返信した Cherri Code Cloud Agent です。記録されるのは ID と結果のみで、プロンプト、結果のテキスト、委任先自身のアクションは一切含まれません。サブエージェントのツール呼び出しは、initiated_by=subagent を持つ独自の grok_bot.* 行として記録されます。Cloud Agent の実行は cloud_agents ファミリーで記録されます。

1 回の委任につき、target_id を共有する 2 つのレコードが生成されます。作業を引き渡した時点の dispatched と、結果が Bot に返った時点の completed です。completed レコードの turn.id には、ディスパッチしたターンではなく、結果を受け取ったターンの ID が入ります。cursor.grok_bot.tool_call.id はディスパッチした呼び出し (subagent_stop レコードの場合は stop 呼び出し) を指します。この属性は dispatched レコードとサブエージェントの completed レコードに含まれ、Cloud Agent の完了レコードには含まれません。

属性型有無値 / 備考
cursor.grok_bot.delegation.direction文字列常にdispatched
cursor.grok_bot.delegation.kind文字列常にcloud_agent_launch
cursor.grok_bot.delegation.target文字列常にcloud_agent
cursor.grok_bot.delegation.target_id文字列常にCloud Agent の ID (bc-...。cloud_agents ファミリーが cursor.conversation.id としてエクスポートする値と同じ) 、またはサブエージェントの会話 ID (sand-subagent-...) 。不透明
cursor.grok_bot.delegation.outcome文字列completed のみsuccess
cursor.grok_bot.delegation.duration_msint任意completed レコードにおけるディスパッチから結果までの実経過時間。委任先が受信ターンの外で実行された場合、およびすべての dispatched レコードでは含まれません

既知の制限:

  • 次のものは記録されません: Cloud Agent の実行中のターンに注入された steer (新しい実行は発生しないため) 、Cherri Code が拒否した起動または返信、Cloud Agent のキャンセル、他のユーザーが開始して Bot が監視しているだけの実行、ルーチンのサブエージェントによる親のウェイク。
  • 停止したサブエージェントが後から error の完了を返すことがあるため、1 つの target_id に stopped と error の両方のレコードが存在する場合があります。
  • Cloud Agent の completed レコードはベストエフォートです。Bot が以前のターンで起動したエージェントを再度監視すると、完了レコードの kind が cloud_agent_launch になることがあります。また、実行途中で再監視された起動では、dispatched に対応する completed が記録されないことがあります。2 つのレコードは target_id で突き合わせ、完了レコードが欠落していても処理できるようにしてください。
  • 他のすべての grok_bot.* 行と同様に、配信は少なくとも1回です。クラッシュ後に再試行された起動、返信、完了は、1 つの target_id に対して 2 回記録されることがあります。まず cursor.event.id で重複を排除してください。

会話コンテンツ

ファミリー conversation_content。conversation.* イベントは、本文が固定のイベント名ではなくペイロード (メッセージ本文、または MCP ツール呼び出しの片側) となる唯一のログレコードです。他のファミリーと同様に、ログイベント名でルーティングしてください。cursor.conversation.user_message はプロンプト、cursor.conversation.assistant_message はレスポンス、cursor.conversation.tool_io は MCP ツール呼び出しの引数または結果です。これらを区別する目的で本文を解析しないでください。

本文。 スクラブ済みのテキストです。上限はメッセージが 32 KiB、ツール呼び出しの各側が 8 KiB です。cursor.conversation.content_truncated は、エクスポートされた本文がマスキング済みテキストの先頭部分である場合に必ず設定されます。元のテキストが上限を超えた場合も、リダクションによって上限を超えた場合も同様です。また tool_io では、本文が上限内であってもスクラブによって解析できなくなった場合に設定されます。

ID。 レコードには共通ログ属性が含まれます。cursor.conversation.id を使うと、その会話の api.request、skill.activated、hook.execution_complete、cloud_agent.*、grok_bot.* の各ログと結合できます。ユーザー識別子は任意の cursor.user.* リソース属性のみで、ログ属性には一切含まれません。cursor.request.id、cursor.usage_event.id、およびメッセージレコードの cursor.grok_bot.turn.id に依存しないでください。tool_io では、turn.id が共有の grok_bot.* 属性として含まれます。

対応サーフェス。 Cloud Agents と Cherri Bot のみです。Cloud Agent の会話は、リソースに cursor.surface=cloud_agent が付与された状態で届きます。Cherri Bot の会話は cursor.surface=grok_bot が付与された状態で届き、アクション記録が有効な場合は Bot の grok_bot.* アクションログも併せて届きます。tool_io は Cherri Bot 専用です。IDE、CLI、デスクトップの会話は、現時点ではこのファミリーの対象外です。cursor.surface でフィルタリングまたはルーティングしてください。

トグル。 各イベントは、チームのオプトインと送信先の対応するトグルの両方がオンの場合にのみ送信されます。user_message には Prompts、assistant_message には Responses、tool_io には Tool I/O が必要です。トグルについてはセットアップページを参照してください。

3 つのイベントはすべて INFO で、次の属性を持ちます。

属性型有無値 / 備考
cursor.conversation.provenance文字列常にserver (Cherri Code が観測) 。client は予約済みのため、受信してもエラーにしないでください。
cursor.conversation.message.id文字列常に会話内のメッセージ ID
cursor.conversation.turn.id文字列任意会話内のターン ID。メッセージレコードでは cursor.grok_bot.turn.id とは別物で、tool_io では同じ値です。
cursor.conversation.content_truncatedbool常に本文がマスキング済みテキストの先頭部分である場合、または tool_io でスクラブにより解析できなくなった場合は true

cursor.conversation.user_message

INFO。本文: ユーザープロンプトのスクラブ済みテキスト。

cursor.conversation.assistant_message

INFO。本文: レスポンスの最終的な assistant text をスクラブ済みのもの。

cursor.conversation.tool_io

INFO。本文: MCP ツール呼び出しの片側を、スクラブ済みのコンパクトな JSON にしたもの (最大 8 KiB) 。http transport で実行された Cherri Bot の MCP ツール呼び出し 1 件につき、2 件のレコードが生成されます。arguments レコードには Bot が送信した JSON オブジェクトが、result レコードにはコネクタの応答が格納されます。成功時はツールのテキストと構造化コンテンツ、失敗時はエラー、拒否、または却下のメッセージが入ります。画像のバイト列は MIME タイプに置き換えられます。Bot のコンピューター上での stdio 呼び出しはメタデータのみを報告し、tool_io レコードは生成されません。チームのオプトインに加えて、送信先の Tool I/O トグルを有効にする必要があります。

両方のレコードには共通の grok_bot.* 相関属性 (provenance、turn.id、tool_call.id、event.sequence) が含まれます。そのため cursor.grok_bot.tool_call.id が必ず存在し、これを使って呼び出しの cursor.grok_bot.mcp_tool_call 行や cursor.grok_bot.tool_decision 行と結合できます。cursor.tool.name、cursor.tool.status、cursor.mcp.server.name にはメタデータ行と同じ値が入るため、各レコードを単独でも読み取れます。

属性型有無値 / 備考
cursor.conversation.tool_io.direction文字列常にarguments
cursor.tool.name文字列常に顧客定義の MCP ツール名 (open)
cursor.tool.status文字列常にsuccess
cursor.mcp.server.name文字列任意顧客定義のサーバー表示名 (open)
cursor.grok_bot.provenance文字列常にserver
cursor.grok_bot.tool_call.id文字列常に呼び出しの mcp_tool_call 行および tool_decision 行との結合キー
cursor.grok_bot.turn.id文字列任意このレコードの cursor.conversation.turn.id と同じ値
cursor.grok_bot.event.sequenceint任意ターン内での呼び出しのシーケンス番号。古いバージョンの Cherri Bot では含まれません

cursor.conversation.content_truncated が true の場合、本文は JSON としてパースできません。この場合の本文は、マスキング済みテキストの先頭部分か、スクラブの結果パースできなくなったものです。後者の場合、Cherri Code はスクラブを弱めた本文をエクスポートする代わりに、フラグを付けてそのままエクスポートします。パースする前にフラグを確認してください。両側ともメッセージ本文と同じスクラバーで処理されます。さらに、キー名が認証情報を示す JSON メンバーや代入 (password、passphrase、token、api_key、secret、secret_key、access_key、authorization、cookie、private_key、credentials、および client_secret や x-api-key などの複合語) については、値の内容にかかわらずその値をマスキングするキーベースの処理も適用されます。ヘッダーのペアも対象です。[{"name":"Authorization","value":"Basic ..."}] のように、name、key、header メンバーの値がリストに該当する場合、同階層の value がマスキングされます。同様に、先頭要素がリストに該当する 2 要素の配列では、2 番目の要素がマスキングされます (["password","..."]) 。数値として保持されたカード情報のフィールド ("cvc": 123) は [REDACTED: Card] に置き換えられ、ASCII の \uXXXX エスケープはスクラブ前にデコードされます。1 つの配列の複数の要素 (ファイルの各行、結果のテキストブロックなど) に分割された秘密鍵ブロックは、BEGIN 行から END 行までまとめてマスキングされます。ただし、無関係なフィールドにまたがって分割されている場合はマスキングされません。キーベースの処理は、文字列値の中にネストされた JSON の 1 階層目まで適用されます。それより深い階層で再エンコードされたドキュメントは、値の形状のみに基づいてスクラブされます。スクラバーで検出できない内容については、MCP tool I/O を参照してください。

ID と結合

目的フィールド対象範囲
ログの重複排除cursor.event.idすべてのログレコード
セッションまたは Bot 単位でグループ化cursor.conversation.id存在する場合のログ。Cherri Bot では、この値が Bot の識別子 (その会話 ID) になります。
Cherri Bot のアクティビティをターン単位でグループ化cursor.grok_bot.turn.id存在する場合の grok_bot.* ログ、Bot の skill.activated ログ、conversation.tool_io ログ、および cursor.surface=grok_bot を持つ api.request / api.error ログ。conversation.user_message や conversation.assistant_message ではこのフィールドに依存しないでください。
Bot のターン内のアクションを順序付けるcursor.grok_bot.event.sequence現行バージョンの Cherri Bot からの grok_bot.* ログと conversation.tool_io ログ。この値で並べ替えてください。値が連続しているとは限りません
1 回の Bot ツール呼び出しの行をグループ化cursor.grok_bot.tool_call.idtool_result、tool_decision、mcp_tool_call、computer_use_session、file_transfer、message_delivery、delegation、ガードレールのエスカレーション、Bot の skill.activated、およびツール I/O が有効な場合は conversation.tool_io の入力側と出力側の両方
承認の要求とその回答を結合するcursor.grok_bot.decision.idtool_decision と、同じ呼び出しの tool_escalation / pause / interrupted の guardrail 行
サブエージェントのアクションを親に集約するcursor.grok_bot.root_turn.idclient を発生元とする grok_bot.* ログ。cursor.grok_bot.subagent.id でサブエージェントを識別します
プロンプトとレスポンスをセッションに紐づけるcursor.conversation.idconversation_content のオプトインがある場合のみ、conversation.* ログ (Cloud Agents と Cherri Bot)
プロンプトとレスポンスをターン単位でグループ化cursor.conversation.turn.id存在する場合の conversation.* ログ
ユーザー単位でグループ化リソース属性 cursor.user.account_id存在する場合のログとメトリクス。Admin API の GET /teams/members レスポンスの id と結合できます。同じリソース上の cursor.user.email でメンバーを直接識別できます。
課金の突合cursor.usage_event.idapi.request、api.error、api.correction の各ログ

エクスポートされるログには OpenTelemetry の trace_id や span_id フィールドは含まれません。Bot とターンの相関付けには cursor.conversation.id と cursor.grok_bot.turn.id を使用してください。メトリクスには相関 ID が含まれないため、会話ごとのトークン合計には api.request ログを使用してください。

具体的な手順は、セットアップページの Joining sessions を参照してください。

配信セマンティクス

  • ログは少なくとも1回配信されます。一時的な障害は約7日間、自動的に復旧します。event.id で重複排除してください。恒久的な拒否 (継続する4xx、不正なペイロード) は再送されません。
  • メトリクスは多くても1回配信されます。失敗したメトリクスリクエストは再試行も再送もされません。
  • 順序は保証されません。 修正は修正対象のリクエストより後に到着する場合があります。レコードのタイムスタンプ順に並べてください。
  • OTLP の部分的成功が尊重されます。拒否された項目は再送されません。
  • 送信先の有効化前のデータはバックフィルされません。エクスポート元のソースの保持期間も約7日間です (配信の再試行期間とは別です)。