-
Notifications
You must be signed in to change notification settings - Fork 1
feat(telemetry): Go fast-path skips cloud telemetry — allow decisions invisible in dashboard #1478
Description
Observation
Agent: copilot-cli:sonnet:studio:senior (workspace#273 telemetry E2E gate)
Discovered: 2026-03-30
Severity: P2 — data gap in dashboard, not a correctness issue
Behavior
In apps/cli/src/commands/claude-hook.ts:
const goResult = tryGoFastPath(policyDefs, normalizedPayload);
if (goResult.used && goResult.allowed) {
return false; // Action allowed by Go fast-path — not denied
}
// If Go denied or was not used, continue to TS kernel for full processingWhen the Go kernel fast-path evaluates an action as allowed, the function returns immediately — before createCloudSinks() is called. This means all allow-decisions processed by the Go fast-path produce zero cloud telemetry events.
Only denied actions and TS kernel-processed actions appear in the dashboard.
Impact on Demo Dashboard
The cloud summary shows:
- 372k total events (decision, policy_evaluation, tool_call)
- 10k denied outcomes
- But the per-action volume for common tools (Bash, Read, Edit) is dramatically understated
For the May 6 demo, the dashboard may show low activity numbers that don't reflect actual agent workload. The shell.exec count (143k) is likely correct because Go allows most shell actions, but those pass without a telemetry record.
Recommendation
Two options:
- Emit a lightweight allow event from the Go fast-path before returning (add a fire-and-forget to the JSONL queue)
- Accept the gap — document that dashboard shows governance-evaluated events, not total tool volume
Option 2 may be fine for the demo since it correctly shows governance activity. But the dashboard should be labeled accordingly.
Filed automatically during workspace#273 telemetry E2E gate — studio senior agent