CedarCopilot wants to merge 1 commit into staging from fix/restore-intent-tracking
Live on prod, watching, 2 days left
Libra has verdicts on 0 of 12 tracked behaviors on prod; 12 are still being checked. Libra checks hourly for 3 days after each deploy.
PR #2834 removed the user_request_summary/is_new_request intent-capture fields from every external-MCP tool, reading Manufact's readiness-checklist finding as disqualifying for a required, admittedly-pure-telemetry field ("A tool may request a brief, task-specific user intent field only when it meaningfully improves execution...").
Manufact has since confirmed directly that this pattern is acceptable, so this restores the mechanism exactly as it was before that fix:
INTENT_FIELD_SHAPE, injectIntentFields, and the recordIntent capture branch in tool-call-observability.tsrecordExternalMcpToolIntent/recordExternalChatMessage/runSerializedPerUser/resolveExternalMcpThreadId chain in chat-message-persistence.tsinstrumentToolCalls call site + import in server.tstool-call-observability.test.ts, chat-message-persistence.test.ts, external-mcp.e2e.test.ts, flat-args.test.ts, no-bare-user-id-inputs.test.ts, mutating-actions-are-administrable.test.ts, tool-inputschema-size.test.ts, redact-secrets.ts, deprecated-record-shims.ts, docs/design/mcp-observability-and-plugin.mdOnly the intent-capture removal is reverted. The other three fixes from PR #2834 are untouched:
server.ts's purposeSentence)config-read/systems-write schemas (external-capability-redaction.ts, scope-map.ts)document-write.delete's new approval-ask gate (approval-policy.ts)Confirmed no overlap by diffing this restoration file-by-file against PR #2834's own diff , external-capability-redaction.ts, scope-map.ts, documentTool.ts, approval-policy.ts, and the document-deletion docs are all untouched here. The three test files shared between fix #2 and fix #3 (flat-args.test.ts, no-bare-user-id-inputs.test.ts, mutating-actions-are-administrable.test.ts, tool-inputschema-size.test.ts) keep fix #2's externalFamilyTools() switch and additionally restore fix #3's injectIntentFields wrapping , both fixes coexist correctly in those files.
tsc -b cleanpnpm deps:check clean (no dependency violations, 1843 modules cruised)tool-call-observability.test.ts, chat-message-persistence.test.ts, server.test.ts, flat-args.test.ts, no-bare-user-id-inputs.test.ts, mutating-actions-are-administrable.test.ts, tool-inputschema-size.test.ts, scope-map.test.ts, external-capability-redaction.test.ts, external-mcp.e2e.test.ts, approval.test.ts)🤖 Generated with Claude Code
The PR is not safe to merge until existing cached MCP schemas remain callable and free-text intent summaries are prevented from leaking sensitive content to persistence and Slack.
Libra has not measured any production surfaces for this change yet.