@intutic/mcp-governance-proxy 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +34 -18
  2. package/dist/agentTools.d.ts +68 -0
  3. package/dist/agentTools.d.ts.map +1 -0
  4. package/dist/agentTools.js +150 -0
  5. package/dist/agentTools.js.map +1 -0
  6. package/dist/anomaly/detectors.js +1 -1
  7. package/dist/anomaly/detectors.js.map +1 -1
  8. package/dist/anomaly/index.d.ts +2 -1
  9. package/dist/anomaly/index.d.ts.map +1 -1
  10. package/dist/anomaly/index.js.map +1 -1
  11. package/dist/approvalHold.d.ts +66 -0
  12. package/dist/approvalHold.d.ts.map +1 -0
  13. package/dist/approvalHold.js +143 -0
  14. package/dist/approvalHold.js.map +1 -0
  15. package/dist/budget.d.ts +133 -0
  16. package/dist/budget.d.ts.map +1 -0
  17. package/dist/budget.js +191 -0
  18. package/dist/budget.js.map +1 -0
  19. package/dist/config.d.ts +7 -2
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +2 -2
  22. package/dist/config.js.map +1 -1
  23. package/dist/daemon/healthMonitor.d.ts +2 -0
  24. package/dist/daemon/healthMonitor.d.ts.map +1 -1
  25. package/dist/daemon/healthMonitor.js +60 -27
  26. package/dist/daemon/healthMonitor.js.map +1 -1
  27. package/dist/daemon/index.d.ts +0 -2
  28. package/dist/daemon/index.d.ts.map +1 -1
  29. package/dist/daemon/index.js +0 -2
  30. package/dist/daemon/index.js.map +1 -1
  31. package/dist/daemon/instrumentation.d.ts +2 -2
  32. package/dist/daemon/instrumentation.js +2 -2
  33. package/dist/daemon/policyCache.d.ts +38 -3
  34. package/dist/daemon/policyCache.d.ts.map +1 -1
  35. package/dist/daemon/policyCache.js +64 -22
  36. package/dist/daemon/policyCache.js.map +1 -1
  37. package/dist/daemon/socketServer.d.ts +0 -1
  38. package/dist/daemon/socketServer.d.ts.map +1 -1
  39. package/dist/daemon/socketServer.js +0 -1
  40. package/dist/daemon/socketServer.js.map +1 -1
  41. package/dist/daemon/statusReporter.d.ts.map +1 -1
  42. package/dist/daemon/statusReporter.js +0 -1
  43. package/dist/daemon/statusReporter.js.map +1 -1
  44. package/dist/daemon/telemetryBatcher.d.ts.map +1 -1
  45. package/dist/daemon/telemetryBatcher.js +0 -1
  46. package/dist/daemon/telemetryBatcher.js.map +1 -1
  47. package/dist/daemonClient.d.ts.map +1 -1
  48. package/dist/daemonClient.js +0 -1
  49. package/dist/daemonClient.js.map +1 -1
  50. package/dist/dlp.d.ts +32 -3
  51. package/dist/dlp.d.ts.map +1 -1
  52. package/dist/dlp.js +116 -18
  53. package/dist/dlp.js.map +1 -1
  54. package/dist/dlpPii.d.ts +66 -0
  55. package/dist/dlpPii.d.ts.map +1 -0
  56. package/dist/dlpPii.js +235 -0
  57. package/dist/dlpPii.js.map +1 -0
  58. package/dist/emitter.d.ts +68 -10
  59. package/dist/emitter.d.ts.map +1 -1
  60. package/dist/emitter.js +29 -43
  61. package/dist/emitter.js.map +1 -1
  62. package/dist/guardedValkey.d.ts +40 -0
  63. package/dist/guardedValkey.d.ts.map +1 -0
  64. package/dist/guardedValkey.js +84 -0
  65. package/dist/guardedValkey.js.map +1 -0
  66. package/dist/httpJson.d.ts +19 -0
  67. package/dist/httpJson.d.ts.map +1 -0
  68. package/dist/httpJson.js +62 -0
  69. package/dist/httpJson.js.map +1 -0
  70. package/dist/identity.d.ts +27 -0
  71. package/dist/identity.d.ts.map +1 -0
  72. package/dist/identity.js +36 -0
  73. package/dist/identity.js.map +1 -0
  74. package/dist/injection.js +1 -1
  75. package/dist/interceptor.d.ts +135 -8
  76. package/dist/interceptor.d.ts.map +1 -1
  77. package/dist/interceptor.js +284 -45
  78. package/dist/interceptor.js.map +1 -1
  79. package/dist/policy.d.ts +105 -2
  80. package/dist/policy.d.ts.map +1 -1
  81. package/dist/policy.js +188 -40
  82. package/dist/policy.js.map +1 -1
  83. package/dist/proxy.d.ts +35 -11
  84. package/dist/proxy.d.ts.map +1 -1
  85. package/dist/proxy.js +183 -66
  86. package/dist/proxy.js.map +1 -1
  87. package/dist/refusals.d.ts +26 -0
  88. package/dist/refusals.d.ts.map +1 -0
  89. package/dist/refusals.js +43 -0
  90. package/dist/refusals.js.map +1 -0
  91. package/dist/registryObserver.d.ts +37 -0
  92. package/dist/registryObserver.d.ts.map +1 -0
  93. package/dist/registryObserver.js +70 -0
  94. package/dist/registryObserver.js.map +1 -0
  95. package/dist/session.d.ts +1 -1
  96. package/dist/session.js +1 -1
  97. package/dist/sessionScope.d.ts +1 -1
  98. package/dist/sessionScope.js +1 -1
  99. package/dist/sessionStore.d.ts +10 -23
  100. package/dist/sessionStore.d.ts.map +1 -1
  101. package/dist/sessionStore.js +17 -76
  102. package/dist/sessionStore.js.map +1 -1
  103. package/dist/version.d.ts +12 -0
  104. package/dist/version.d.ts.map +1 -0
  105. package/dist/version.js +13 -0
  106. package/dist/version.js.map +1 -0
  107. package/dist/wasm/context.d.ts +10 -0
  108. package/dist/wasm/context.d.ts.map +1 -1
  109. package/dist/wasm/context.js +27 -0
  110. package/dist/wasm/context.js.map +1 -1
  111. package/dist/wasm/hostImports.d.ts +3 -3
  112. package/dist/wasm/hostImports.d.ts.map +1 -1
  113. package/dist/wasm/hostImports.js +8 -7
  114. package/dist/wasm/hostImports.js.map +1 -1
  115. package/dist/wasm/loader.d.ts +8 -1
  116. package/dist/wasm/loader.d.ts.map +1 -1
  117. package/dist/wasm/loader.js +2 -0
  118. package/dist/wasm/loader.js.map +1 -1
  119. package/dist/wasm/referencedFiles.d.ts +29 -4
  120. package/dist/wasm/referencedFiles.d.ts.map +1 -1
  121. package/dist/wasm/referencedFiles.js +48 -21
  122. package/dist/wasm/referencedFiles.js.map +1 -1
  123. package/dist/wasm/runner.d.ts +106 -22
  124. package/dist/wasm/runner.d.ts.map +1 -1
  125. package/dist/wasm/runner.js +194 -74
  126. package/dist/wasm/runner.js.map +1 -1
  127. package/dist/wasm/watch.js +1 -1
  128. package/dist/wasm/worker.d.ts +10 -6
  129. package/dist/wasm/worker.d.ts.map +1 -1
  130. package/dist/wasm/worker.js +93 -9
  131. package/dist/wasm/worker.js.map +1 -1
  132. package/package.json +5 -4
  133. package/dist/toolPoison.d.ts +0 -32
  134. package/dist/toolPoison.d.ts.map +0 -1
  135. package/dist/toolPoison.js +0 -81
  136. package/dist/toolPoison.js.map +0 -1
  137. package/dist/wasm/fuel.d.ts +0 -35
  138. package/dist/wasm/fuel.d.ts.map +0 -1
  139. package/dist/wasm/fuel.js +0 -299
  140. package/dist/wasm/fuel.js.map +0 -1
  141. package/dist/wasm/memoryCap.d.ts +0 -21
  142. package/dist/wasm/memoryCap.d.ts.map +0 -1
  143. package/dist/wasm/memoryCap.js +0 -54
  144. package/dist/wasm/memoryCap.js.map +0 -1
  145. package/dist/wasm/wasmBinary.d.ts +0 -25
  146. package/dist/wasm/wasmBinary.d.ts.map +0 -1
  147. package/dist/wasm/wasmBinary.js +0 -100
  148. package/dist/wasm/wasmBinary.js.map +0 -1
package/dist/proxy.js CHANGED
@@ -7,7 +7,8 @@
7
7
  *
8
8
  * Architecture (standalone mode — the `intutic` harness entry):
9
9
  * Harness ↔ [McpGovernanceProxy as MCP Server] ↔ Control Plane REST API
10
- * Exposes governance tools: intutic_governance_status, intutic_list_sops, intutic_list_incidents.
10
+ * Exposes governance tools: intutic_governance_status, intutic_list_sops, intutic_list_incidents,
11
+ * intutic_hold_status, intutic_mcp_registry_status, intutic_mcp_budget_remaining.
11
12
  *
12
13
  * Architecture (remote bridge mode — `--remote-url`, see remoteBridge.ts):
13
14
  * Harness stdin → [McpGovernanceProxy] → remote MCP server (HTTP/SSE)
@@ -30,33 +31,76 @@ import * as node_child from 'node:child_process';
30
31
  import * as node_readline from 'node:readline';
31
32
  import { createStderrLogger as createLogger } from './stderrLog.js';
32
33
  import { PolicyClient } from './policy.js';
33
- import { GovernanceEmitter } from './emitter.js';
34
+ import { GovernanceEmitter, detectionFinding } from './emitter.js';
34
35
  import { ToolCallInterceptor } from './interceptor.js';
35
- import { redactText as redactMcpText } from './dlp.js';
36
+ import { budgetRemaining, describeFailure, holdStatus, readControlPlane, registryStatus } from './agentTools.js';
37
+ import { redactText as redactMcpText, setWorkspacePii } from './dlp.js';
36
38
  import { scanText, injectionSeverity, setDynamicInjectionPatterns } from './injection.js';
37
39
  import { toolPoisoning, dlpEscalation } from './anomaly/index.js';
38
40
  import { SessionState } from './session.js';
39
41
  import { ValkeySessionStore } from './sessionStore.js';
42
+ import { GuardedValkey } from './guardedValkey.js';
43
+ import { McpBudgetEnforcer, ValkeyBudgetStore } from './budget.js';
40
44
  import { WasmRunner } from './wasm/runner.js';
41
45
  import { checkTofu, decideTofuAction } from './tofu.js';
46
+ import { RegistryObserver } from './registryObserver.js';
47
+ import { ApprovalHolds } from './approvalHold.js';
48
+ import { callerIdentity } from './identity.js';
49
+ import { normalizeToolDefinition } from '@intutic/shared-types';
50
+ import { PACKAGE_VERSION } from './version.js';
42
51
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
43
52
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
44
53
  import { z } from 'zod';
45
54
  import { watchWasmDir } from './wasm/watch.js';
46
55
  const log = createLogger('mcp-governance-proxy');
47
56
  /**
48
- * Build a JSON-RPC 2.0 error response for a blocked tool call.
57
+ * Build a JSON-RPC 2.0 error response for a blocked tool call. `data` names
58
+ * the refusal for a client that reads it programmatically (refusals.ts).
49
59
  */
50
- function buildBlockResponse(id, reason) {
60
+ function buildBlockResponse(id, reason, data) {
51
61
  return {
52
62
  jsonrpc: '2.0',
53
63
  id,
54
64
  error: {
55
65
  code: -32603, // Internal error (closest standard code to "blocked")
56
66
  message: `[Intutic Governance] Tool call blocked: ${reason}`,
67
+ data,
57
68
  },
58
69
  };
59
70
  }
71
+ /** The `error.data` of a block decision: its code, rule id and detail. */
72
+ function blockData(decision) {
73
+ return { code: decision.code, ruleId: decision.ruleId, ...decision.detail };
74
+ }
75
+ /**
76
+ * The JSON-RPC error for a call held for approval. Same code as a block (the
77
+ * call did not run), a message that says "held" rather than "blocked", and
78
+ * the hold id in `data` for a client that reads it programmatically — empty
79
+ * when the hold could not be recorded, so there is nothing to approve yet.
80
+ */
81
+ function buildHoldResponse(id, reason, holdId, ruleId) {
82
+ return {
83
+ jsonrpc: '2.0',
84
+ id,
85
+ error: {
86
+ code: -32603,
87
+ message: `[Intutic Governance] Tool call ${reason}`,
88
+ data: { code: 'HELD', ruleId, status: 'pending_approval', holdId },
89
+ },
90
+ };
91
+ }
92
+ /**
93
+ * Who a per-member MCP budget counts when the control plane has not named the
94
+ * member behind this proxy's key: the key's prefix, else the OS user. Callers
95
+ * with neither share one allowance.
96
+ */
97
+ export function fallbackBudgetCaller(identity) {
98
+ if (identity.apiKeyPrefix)
99
+ return `key:${identity.apiKeyPrefix}`;
100
+ if (identity.osUser)
101
+ return `os:${identity.osUser}`;
102
+ return 'unknown';
103
+ }
60
104
  /**
61
105
  * Write a JSON-RPC frame to stdout (the ONLY valid place to write in a stdio MCP proxy).
62
106
  */
@@ -84,14 +128,14 @@ function writeFrame(frame) {
84
128
  *
85
129
  * tools/list curation (the Uber-gateway mechanism): when the workspace
86
130
  * declares an additive allowlist, tools outside it are removed from the
87
- * listing — an agent that never sees a tool does not hallucinate calls to
131
+ * listing, as are tools the registry disables on this server — an agent that never sees a tool does not hallucinate calls to
88
132
  * it, and the call-time block in the interceptor stays as the enforcement
89
133
  * backstop. Operator description overrides apply to what remains, which is
90
134
  * also the counter to a poisoned upstream description — the pin detects the
91
135
  * change; the override controls what the agent actually reads.
92
136
  */
93
- export function processServerLine(raw, pending, allowedTools, overrides, injectionAction = 'warn', injectionPatterns = []) {
94
- // Workspace-supplied injection patterns (TD-436), on top of the floor.
137
+ export function processServerLine(raw, pending, allowedTools, overrides, injectionAction = 'warn', injectionPatterns = [], disabledTools = []) {
138
+ // Workspace-supplied injection patterns, on top of the floor.
95
139
  // Idempotent when the list has not changed, so this is cheap per line.
96
140
  setDynamicInjectionPatterns(injectionPatterns);
97
141
  const trimmed = raw.trim();
@@ -141,6 +185,7 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
141
185
  message: `[Intutic Governance] Result withheld: it contained sensitive data ` +
142
186
  `whose redaction did not survive re-parsing. The tool ran; its output ` +
143
187
  `was not delivered. (${findings.map((f) => f.description).join('; ')})`,
188
+ data: { code: 'RESULT_WITHHELD_DLP', ruleId: `dlp.${findings[0]?.pattern ?? 'output'}` },
144
189
  },
145
190
  };
146
191
  return { line: JSON.stringify(withheld), redactedTool, redactions };
@@ -167,6 +212,7 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
167
212
  message: `[Intutic Governance] Result withheld: it triggered prompt-injection ` +
168
213
  `pattern(s) (${injectionPatterns.join(', ')}). The tool call already ran; ` +
169
214
  `its output was not delivered.`,
215
+ data: { code: 'RESULT_WITHHELD_INJECTION', ruleId: 'injection.tool_result' },
170
216
  },
171
217
  };
172
218
  return {
@@ -192,7 +238,7 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
192
238
  redactedTool,
193
239
  redactions,
194
240
  injectionFindings,
195
- dlpEscalationReason: dlpEscalationFinding?.reason,
241
+ dlpEscalation: dlpEscalationFinding ?? undefined,
196
242
  };
197
243
  }
198
244
  if (req.method === 'tools/list') {
@@ -201,10 +247,17 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
201
247
  return { line: raw };
202
248
  let hidden = 0;
203
249
  let overridden = 0;
250
+ // Copied before the overrides below rewrite descriptions in place.
251
+ const upstream = tools
252
+ .map(normalizeToolDefinition)
253
+ .filter((t) => t !== null);
204
254
  let kept = tools;
205
- if (allowedTools.length > 0) {
255
+ if (allowedTools.length > 0 || disabledTools.length > 0) {
206
256
  kept = kept.filter((t) => {
207
- const keep = typeof t['name'] === 'string' && allowedTools.includes(t['name']);
257
+ const name = t['name'];
258
+ const keep = typeof name === 'string' &&
259
+ (allowedTools.length === 0 || allowedTools.includes(name)) &&
260
+ !disabledTools.includes(name);
208
261
  if (!keep)
209
262
  hidden += 1;
210
263
  return keep;
@@ -251,9 +304,10 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
251
304
  return {
252
305
  line: raw,
253
306
  toolsListTools: kept,
307
+ toolsListUpstream: upstream,
254
308
  toolsListMsgId: msg.id,
255
309
  injectionFindings,
256
- toolPoisoningReason: toolPoisoningFinding?.reason,
310
+ toolPoisoning: toolPoisoningFinding ?? undefined,
257
311
  };
258
312
  }
259
313
  msg.result['tools'] = kept;
@@ -261,9 +315,10 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
261
315
  line: JSON.stringify(msg),
262
316
  curated: { hidden, overridden },
263
317
  toolsListTools: kept,
318
+ toolsListUpstream: upstream,
264
319
  toolsListMsgId: msg.id,
265
320
  injectionFindings,
266
- toolPoisoningReason: toolPoisoningFinding?.reason,
321
+ toolPoisoning: toolPoisoningFinding ?? undefined,
267
322
  };
268
323
  }
269
324
  return { line: raw };
@@ -315,7 +370,10 @@ export function handleHarnessLine(line, pending, interceptor, forward, session)
315
370
  interceptor.decide(toolName, toolInput).then((decision) => {
316
371
  if (decision.action === 'block') {
317
372
  log.warn({ action: 'tool_blocked', toolName, reason: decision.reason }, 'Tool call blocked by governance proxy');
318
- writeFrame(buildBlockResponse(msg.id, decision.reason));
373
+ writeFrame(buildBlockResponse(msg.id, decision.reason, blockData(decision)));
374
+ }
375
+ else if (decision.action === 'hold') {
376
+ writeFrame(buildHoldResponse(msg.id, decision.reason, decision.holdId, decision.ruleId));
319
377
  }
320
378
  else {
321
379
  // Allow: the response now needs inspecting on the way back —
@@ -354,12 +412,18 @@ export class McpGovernanceProxy {
354
412
  * (for detection + reask counting), `handleHarnessLine` (for post-decision
355
413
  * recording), and this class's own `handleServerLine` (for caching the
356
414
  * post-curation tools/list the tool_poisoning detector reads). Since Wave
357
- * 5.3 (TD-437) it is also shared ACROSS the session's sibling proxy
415
+ * 5.3 it is also shared ACROSS the session's sibling proxy
358
416
  * processes through `sessionStore` when a Valkey URL is configured — see
359
417
  * session.ts's module doc.
360
418
  */
361
419
  session;
362
- /** The Valkey-backed shared window, when `config.valkeyUrl` is set and this is not the standalone entry. */
420
+ /**
421
+ * The process's one Valkey connection, when `config.valkeyUrl` is set and
422
+ * this is not the standalone entry: the shared session window and the MCP
423
+ * call budgets both use it.
424
+ */
425
+ valkey;
426
+ /** The Valkey-backed shared window, on {@link valkey}. */
363
427
  sessionStore;
364
428
  /**
365
429
  * Phase 3's WASM custom-rule runner — owns the one dedicated
@@ -368,21 +432,29 @@ export class McpGovernanceProxy {
368
432
  * runs, not a second one (see `policy.ts`'s `start(onTick)`).
369
433
  */
370
434
  wasmRunner;
435
+ /** Reports this proxy's server to the registry; absent for the standalone `intutic` entry, which fronts none. */
436
+ registryObserver;
371
437
  realServer = null;
372
438
  constructor(config) {
373
439
  this.config = config;
374
440
  this.policy = new PolicyClient(config.controlPlaneUrl, config.apiKey, config.workspaceId, config.policyTtlMs, config.mcpProxyMode);
375
- this.emitter = new GovernanceEmitter(config.controlPlaneUrl, config.apiKey, config.eventsFilePath, config.workspaceId, config.mcpProxyMode);
441
+ const identity = callerIdentity(config.apiKey, config.serverName, config.sessionScope);
442
+ this.emitter = new GovernanceEmitter(config.controlPlaneUrl, config.apiKey, config.eventsFilePath, config.workspaceId, config.mcpProxyMode, identity);
443
+ this.valkey = config.valkeyUrl ? new GuardedValkey(config.valkeyUrl) : undefined;
376
444
  // The standalone `intutic` entry fronts no real server and records no
377
- // calls worth sharing; every wrapped server gets the shared window.
378
- this.sessionStore =
379
- config.valkeyUrl && !config.standalone ? new ValkeySessionStore(config.valkeyUrl) : undefined;
445
+ // calls worth sharing; it reads Valkey only for the budget counters its
446
+ // `intutic_mcp_budget_remaining` tool reports. Every wrapped server gets
447
+ // the shared window.
448
+ this.sessionStore = this.valkey && !config.standalone ? new ValkeySessionStore(this.valkey) : undefined;
380
449
  this.session = new SessionState({ scope: config.sessionScope, store: this.sessionStore });
381
450
  log.info({ action: 'session_scope', scope: config.sessionScope ?? null, shared: Boolean(this.sessionStore && config.sessionScope) }, this.sessionStore && config.sessionScope
382
451
  ? 'Anomaly session window shared with sibling proxies through Valkey'
383
452
  : 'Anomaly session window is per-process');
384
453
  this.wasmRunner = new WasmRunner(config.mcpWasmDir);
385
- this.interceptor = new ToolCallInterceptor(this.policy, this.emitter, config.failOpen, config.serverName, config.mcpInjectionAction, this.session, config.mcpAnomalyMode, config.mcpAnomalyOverrides, this.wasmRunner, config.workspaceId);
454
+ this.registryObserver = config.standalone
455
+ ? undefined
456
+ : new RegistryObserver(config.controlPlaneUrl, config.apiKey, config.serverName, config.remoteTransport ?? 'stdio');
457
+ this.interceptor = new ToolCallInterceptor(this.policy, this.emitter, config.failOpen, config.serverName, config.mcpInjectionAction, this.session, config.mcpAnomalyMode, config.mcpAnomalyOverrides, this.wasmRunner, config.workspaceId, new ApprovalHolds(config.controlPlaneUrl, config.apiKey, config.workspaceId, config.serverName, identity), new McpBudgetEnforcer(this.valkey ? new ValkeyBudgetStore(this.valkey) : undefined, config.workspaceId, config.serverName, fallbackBudgetCaller(identity)));
386
458
  }
387
459
  /**
388
460
  * The tools/call decision engine — exposed so `remoteBridge.ts` can drive
@@ -414,10 +486,11 @@ export class McpGovernanceProxy {
414
486
  this.ensureWasmWatch();
415
487
  return this.wasmRunner.rescan();
416
488
  });
489
+ void this.registryObserver?.observe();
417
490
  }
418
491
  wasmWatch = null;
419
492
  /**
420
- * Hot reload for `~/.intutic/wasm/` (TD-442): a directory watcher, not a
493
+ * Hot reload for `~/.intutic/wasm/`: a directory watcher, not a
421
494
  * second timer, so a dropped-in rule takes effect within a second instead
422
495
  * of at the next 60-second tick. Re-armed on every tick because the
423
496
  * directory may not exist when the proxy starts.
@@ -436,7 +509,7 @@ export class McpGovernanceProxy {
436
509
  this.wasmWatch?.close();
437
510
  this.wasmWatch = null;
438
511
  void this.wasmRunner.shutdown();
439
- void this.sessionStore?.close();
512
+ void this.valkey?.close();
440
513
  }
441
514
  /**
442
515
  * Start the proxy. Dispatches to standalone or proxy mode based on config.
@@ -457,36 +530,12 @@ export class McpGovernanceProxy {
457
530
  log.info({ action: 'standalone_start', workspaceId: this.config.workspaceId }, 'Starting Intutic MCP governance server (standalone mode)');
458
531
  const server = new McpServer({
459
532
  name: 'intutic',
460
- version: '0.1.0',
533
+ version: PACKAGE_VERSION,
461
534
  });
462
535
  const cpUrl = this.config.controlPlaneUrl;
463
536
  const apiKey = this.config.apiKey;
464
537
  const workspaceId = this.config.workspaceId;
465
- async function callControlPlane(path) {
466
- try {
467
- const res = await fetch(`${cpUrl}${path}`, {
468
- headers: {
469
- 'Authorization': `Bearer ${apiKey}`,
470
- 'x-workspace-id': workspaceId,
471
- },
472
- signal: AbortSignal.timeout(5000),
473
- });
474
- if (res.status === 403)
475
- return { ok: false, reason: 'forbidden' };
476
- if (!res.ok)
477
- return { ok: false, reason: 'unreachable' };
478
- return { ok: true, data: await res.json() };
479
- }
480
- catch {
481
- return { ok: false, reason: 'unreachable' };
482
- }
483
- }
484
- /** Renders a failed call as text for the agent, naming the actual cause. */
485
- function describeFailure(result, what) {
486
- return result.reason === 'forbidden'
487
- ? `Your Intutic role is not permitted to ${what}. This needs the OWNER, ADMIN or EM role.`
488
- : `Could not reach control plane to ${what}.`;
489
- }
538
+ const callControlPlane = (path) => readControlPlane(cpUrl, apiKey, workspaceId, path);
490
539
  // Tool: intutic_governance_status
491
540
  server.tool('intutic_governance_status', 'Returns the current governance status and health of the Intutic control plane for this workspace.', {}, async () => {
492
541
  const health = await callControlPlane('/healthz');
@@ -524,6 +573,54 @@ export class McpGovernanceProxy {
524
573
  content: [{ type: 'text', text }],
525
574
  };
526
575
  });
576
+ // Tool: intutic_hold_status
577
+ server.tool('intutic_hold_status', 'Reports whether a held tool call (a refusal with code HELD and a hold id) has been approved or rejected, ' +
578
+ 'and whether retrying the identical call will now pass. Pass the hold id the refusal gave (hold_…).', { holdId: z.string().min(1).max(128).describe('The hold id from the refusal, hold_…') }, async ({ holdId }) => {
579
+ const decision = await callControlPlane(`/api/v1/decisions/${encodeURIComponent(holdId)}`);
580
+ let text;
581
+ if (!decision.ok) {
582
+ text =
583
+ decision.reason === 'not_found'
584
+ ? `No hold ${holdId} was found in this workspace. Check the id the refusal gave; a hold that could not be recorded has none.`
585
+ : describeFailure(decision, `report hold ${holdId}`);
586
+ }
587
+ else {
588
+ // Only an approval needs the bypasses, to say whether a retry passes.
589
+ const status = decision.data.status;
590
+ const bypasses = status === 'APPROVED' ? await callControlPlane('/api/v1/decisions/approved-bypasses') : null;
591
+ text = JSON.stringify(holdStatus(holdId, decision.data, bypasses?.ok ? bypasses.data : null), null, 2);
592
+ }
593
+ return { content: [{ type: 'text', text }] };
594
+ });
595
+ // Tool: intutic_mcp_registry_status
596
+ server.tool('intutic_mcp_registry_status', "Reports what this workspace's MCP server registry says about each server: whether calls to it are allowed " +
597
+ 'or refused (blocked, held after a risky tool change, or not approved under a deny default), and which of its ' +
598
+ 'tools are switched off.', { server: z.string().min(1).max(256).optional().describe('One server name; every server when omitted') }, async ({ server: name }) => {
599
+ const result = await callControlPlane('/api/v1/mcp/servers');
600
+ const text = result.ok
601
+ ? JSON.stringify(registryStatus(result.data, name), null, 2)
602
+ : describeFailure(result, 'read the MCP server registry');
603
+ return { content: [{ type: 'text', text }] };
604
+ });
605
+ // Tool: intutic_mcp_budget_remaining
606
+ server.tool('intutic_mcp_budget_remaining', "Lists this workspace's MCP call budgets that count your calls, with how many calls each has left this " +
607
+ 'period and when it resets. Counts are read from the Valkey the MCP proxies on this machine count in.', {}, async () => {
608
+ await this.policy.ready();
609
+ const identity = callerIdentity(apiKey, 'intutic', this.config.sessionScope);
610
+ const store = this.valkey ? new ValkeyBudgetStore(this.valkey) : undefined;
611
+ const budgets = await budgetRemaining(this.policy.getMcpBudgets(), workspaceId, { memberId: this.policy.getPrincipal()?.memberId ?? null, fallback: fallbackBudgetCaller(identity) }, async (keys) => store?.used(keys));
612
+ const unread = budgets.some((b) => b.used === null);
613
+ const text = JSON.stringify({
614
+ budgets,
615
+ ...(unread
616
+ ? {
617
+ note: 'Used counts are null: this server has no Valkey to read them from (INTUTIC_VALKEY_URL), or it ' +
618
+ 'did not answer. The limits still apply.',
619
+ }
620
+ : {}),
621
+ }, null, 2);
622
+ return { content: [{ type: 'text', text }] };
623
+ });
527
624
  const transport = new StdioServerTransport();
528
625
  await server.connect(transport);
529
626
  log.info({ action: 'standalone_ready' }, 'Intutic MCP server ready');
@@ -543,9 +640,9 @@ export class McpGovernanceProxy {
543
640
  * (tofu.ts), which does file I/O — the ONLY case this awaits before
544
641
  * writing; every other line is forwarded exactly as fast as before.
545
642
  *
546
- * On a TOFU mismatch, honors `mcpProxyFailBehavior` via `config.failOpen` —
547
- * the SAME field `interceptor.ts` already reads for its own fail-open/
548
- * fail-closed branches, not a new mechanism: fail-open logs and forwards
643
+ * On a TOFU mismatch, honors `mcpProxyFailBehavior` via the interceptor's
644
+ * `failOpen` — the SAME value its own fail-open/fail-closed branches read,
645
+ * not a new mechanism: fail-open logs and forwards
549
646
  * the (possibly curated) tools/list response as normal; fail-closed
550
647
  * replaces it with a JSON-RPC error naming the server and the setting,
551
648
  * mirroring `buildBlockResponse`'s existing wording style.
@@ -558,7 +655,10 @@ export class McpGovernanceProxy {
558
655
  */
559
656
  async handleServerLine(rawLine, pending) {
560
657
  const injectionAction = this.policy.getInjectionAction() ?? this.config.mcpInjectionAction;
561
- const outcome = processServerLine(rawLine, pending, this.policy.getAllowedTools(), this.policy.getToolDescriptionOverrides(), injectionAction, this.policy.getInjectionPatterns());
658
+ // Results are redacted with the workspace's PII detector actions too —
659
+ // a resources/read answer can arrive before any tools/call set them.
660
+ setWorkspacePii(this.policy.getPiiDetectors());
661
+ const outcome = processServerLine(rawLine, pending, this.policy.getAllowedTools(), this.policy.getToolDescriptionOverrides(), injectionAction, this.policy.getInjectionPatterns(), this.policy.getRegistry()?.disabledTools[this.config.serverName] ?? []);
562
662
  if (outcome.injectionFindings) {
563
663
  for (const finding of outcome.injectionFindings) {
564
664
  const severity = injectionSeverity(finding.patterns, finding.source);
@@ -571,7 +671,14 @@ export class McpGovernanceProxy {
571
671
  severity,
572
672
  withheld: outcome.injectionBlocked === true && finding.source === 'tool_result',
573
673
  }, 'Prompt-injection pattern matched in MCP response traffic');
574
- this.emitter.emit('injection_detected', finding.toolName, undefined, reason, severity);
674
+ const withheld = outcome.injectionBlocked === true && finding.source === 'tool_result';
675
+ this.emitter.emit('injection_detected', finding.toolName, undefined, reason, {
676
+ detectorId: `injection:${finding.source}`,
677
+ kind: 'prompt_injection',
678
+ disposition: withheld ? 'kill' : 'steer',
679
+ severity,
680
+ confidence: 1,
681
+ });
575
682
  // tools/list description findings are report-only in v1 (never
576
683
  // blocked by injection alone — curation + TOFU already govern the
577
684
  // listing); only a `tool_result` finding can carry
@@ -587,24 +694,34 @@ export class McpGovernanceProxy {
587
694
  toolName: outcome.redactedTool,
588
695
  redactions: outcome.redactions,
589
696
  }, 'Sensitive data redacted from a tool result before it reached the agent');
590
- this.emitter.emit('tool_redacted', outcome.redactedTool, undefined, `Result redacted: ${(outcome.redactions ?? []).join('; ')}`, outcome.dlpEscalationReason ? 'high' : undefined);
697
+ this.emitter.emit('tool_redacted', outcome.redactedTool, undefined, `Result redacted: ${(outcome.redactions ?? []).join('; ')}`, {
698
+ detectorId: 'result_redaction',
699
+ kind: 'data_exfiltration',
700
+ disposition: 'steer',
701
+ severity: outcome.dlpEscalation ? 'high' : 'medium',
702
+ confidence: 1,
703
+ });
591
704
  }
592
- if (outcome.dlpEscalationReason) {
705
+ if (outcome.dlpEscalation) {
593
706
  // Phase 2's dlp_escalation: severity escalation only, never a new
594
- // block — see `ServerLineOutcome.dlpEscalationReason`'s doc comment.
595
- log.warn({ action: 'anomaly_detected', detectorId: 'dlp_escalation', toolName: outcome.redactedTool }, outcome.dlpEscalationReason);
596
- this.emitter.emit('anomaly_detected', outcome.redactedTool ?? 'unknown', undefined, outcome.dlpEscalationReason, 'high');
707
+ // block — see `ServerLineOutcome.dlpEscalation`'s doc comment. So the
708
+ // finding records `steer`, what it did, not the detector's declared kill.
709
+ log.warn({ action: 'anomaly_detected', detectorId: 'dlp_escalation', toolName: outcome.redactedTool }, outcome.dlpEscalation.reason);
710
+ this.emitter.emit('anomaly_detected', outcome.redactedTool ?? 'unknown', undefined, outcome.dlpEscalation.reason, detectionFinding(outcome.dlpEscalation, 'steer', 'high'));
597
711
  }
598
712
  if (outcome.curated) {
599
713
  log.info({ action: 'tools_list_curated', ...outcome.curated }, 'tools/list curated: allowlist filtering and/or description overrides applied');
600
714
  }
601
- if (outcome.toolPoisoningReason) {
715
+ if (outcome.toolPoisoning) {
602
716
  // Phase 2's tool_poisoning: report-only (Steer), same as Phase 1's
603
717
  // tools/list description injection scan — never blocks the listing.
604
- log.warn({ action: 'anomaly_detected', detectorId: 'tool_poisoning' }, outcome.toolPoisoningReason);
605
- this.emitter.emit('anomaly_detected', this.config.serverName, undefined, outcome.toolPoisoningReason, 'low');
718
+ log.warn({ action: 'anomaly_detected', detectorId: 'tool_poisoning' }, outcome.toolPoisoning.reason);
719
+ this.emitter.emit('anomaly_detected', this.config.serverName, undefined, outcome.toolPoisoning.reason, detectionFinding(outcome.toolPoisoning, 'steer', 'low'));
606
720
  }
607
721
  if (outcome.toolsListTools) {
722
+ // The registry gets the server's own tool names, before curation:
723
+ // per-tool toggles must be able to re-enable a tool curation hid.
724
+ void this.registryObserver?.observe(outcome.toolsListUpstream ?? []);
608
725
  // Cache the post-curation tools/list for Phase 2's tool_poisoning
609
726
  // detector (already applied above, from this same outcome) and for
610
727
  // Phase 3's WASM rule context (`tools` field) once that lands.
@@ -625,10 +742,10 @@ export class McpGovernanceProxy {
625
742
  // this package — fail-open forwards, fail-closed refuses — never a
626
743
  // silent skip either way.
627
744
  log.error({ action: 'tofu_check_error', err: err.message }, 'TOFU check failed');
628
- if (!this.config.failOpen) {
745
+ if (!this.interceptor.failOpen) {
629
746
  writeFrame(buildBlockResponse(outcome.toolsListMsgId ?? null, `TOFU pin check for MCP server "${serverName}" failed (could not read/write ` +
630
747
  `~/.intutic/mcp-pins/). Blocked by workspace policy (fail-closed mode). ` +
631
- `Contact your administrator or update mcpProxyFailBehavior to open.`));
748
+ `Contact your administrator or update mcpProxyFailBehavior to open.`, { code: 'TOFU_UNAVAILABLE', ruleId: 'mcpProxyFailBehavior' }));
632
749
  return;
633
750
  }
634
751
  process.stdout.write(outcome.line + '\n');
@@ -649,7 +766,7 @@ export class McpGovernanceProxy {
649
766
  log.info({ action: 'tofu_first_contact', serverName, fingerprint: tofu.fingerprint }, 'MCP server tool definitions pinned on first contact');
650
767
  }
651
768
  else if (tofu.status === 'mismatch') {
652
- const action = decideTofuAction(tofu, serverName, this.config.failOpen);
769
+ const action = decideTofuAction(tofu, serverName, this.interceptor.failOpen);
653
770
  const reason = action.reason ?? 'MCP server tool definitions changed since first pinned.';
654
771
  log.warn({
655
772
  action: 'mcp_server_definition_changed',
@@ -660,7 +777,7 @@ export class McpGovernanceProxy {
660
777
  }, reason);
661
778
  this.emitter.emit('mcp_server_definition_changed', serverName, undefined, reason);
662
779
  if (action.block) {
663
- writeFrame(buildBlockResponse(outcome.toolsListMsgId ?? null, reason));
780
+ writeFrame(buildBlockResponse(outcome.toolsListMsgId ?? null, reason, { code: 'TOOL_DEFINITIONS_CHANGED', ruleId: `tofu.${serverName}` }));
664
781
  return;
665
782
  }
666
783
  }
package/dist/proxy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * refusals.ts — the stable code every refusal this proxy gives carries.
3
+ *
4
+ * A JSON-RPC refusal is `-32603` with a message, and a message is for a
5
+ * person: an agent or client that wants to tell a held call from a blocked
6
+ * one, or a used-up budget from a disabled tool, should not have to parse it.
7
+ * So every refusal frame also carries `error.data`: `code` (one of
8
+ * {@link MCP_REFUSAL_CODES}), `ruleId` (the rule, setting or detector that
9
+ * decided) and, where there is more to say, more fields — the hold's
10
+ * `holdId` and `status`, a budget's `budgetId`, `limit`, `used` and
11
+ * `resetAt`.
12
+ *
13
+ * Held to `packages/shared-types/fixtures/refusal-codes.json` (`mcp`) by a
14
+ * test, as the MCP proxy reference's table is.
15
+ *
16
+ * @module
17
+ */
18
+ export declare const MCP_REFUSAL_CODES: readonly ["REGISTRY_UNAVAILABLE", "SERVER_BLOCKED", "SERVER_HELD", "SERVER_NOT_APPROVED", "TOOL_DISABLED", "SERVER_NOT_ALLOWED", "TOOL_NOT_ALLOWED", "SSO_GROUP", "DLP", "SOP_RULE", "HELD", "INJECTION", "ANOMALY", "WASM_RULE", "REASK", "REASK_EXHAUSTED", "BUDGET_EXCEEDED", "BUDGET_UNAVAILABLE", "GOVERNANCE_UNAVAILABLE", "TOFU_UNAVAILABLE", "TOOL_DEFINITIONS_CHANGED", "RESULT_WITHHELD_DLP", "RESULT_WITHHELD_INJECTION"];
19
+ export type McpRefusalCode = (typeof MCP_REFUSAL_CODES)[number];
20
+ /** `error.data` on a refusal frame. */
21
+ export interface RefusalData {
22
+ code: McpRefusalCode;
23
+ ruleId: string;
24
+ [detail: string]: unknown;
25
+ }
26
+ //# sourceMappingURL=refusals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refusals.d.ts","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,eAAO,MAAM,iBAAiB,saAwBpB,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;CAC1B"}