{"record":{"id":"d5aa5d95b9fb4f20","repo":"vercel/ai","slug":"the-acp-implementation-did-not-load-the-active-har","errorCode":null,"errorMessage":"The ACP implementation did not load the active harness-owned MCP tool catalog to revision ${catalog.revision} before the next prompt, so host tools cannot be exposed safely.","messagePattern":"The ACP implementation did not load the active harness-owned MCP tool catalog to revision (.+?) before the next prompt, so host tools cannot be exposed safely\\.","errorType":"exception","errorClass":"HarnessBridgeCapabilityUnsupportedError","httpStatus":null,"severity":"error","filePath":"packages/harness-acp/src/v1/bridge/refresh-host-tool-catalog.ts","lineNumber":54,"sourceCode":"  harnessId,\n  timeoutMs,\n}: {\n  relay: Pick<HostToolRelay, 'updateCatalog' | 'waitForCatalogRefresh'>;\n  tools: ReadonlyArray<HarnessV1BridgeToolWire>;\n  harnessId: string;\n  timeoutMs: number;\n}): Promise<void> {\n  const catalog = relay.updateCatalog({ tools });\n  if (!catalog.changed && tools.length === 0) return;\n  if (\n    await relay.waitForCatalogRefresh({\n      revision: catalog.revision,\n      timeoutMs,\n    })\n  ) {\n    return;\n  }\n  throw new HarnessBridgeCapabilityUnsupportedError({\n    harnessId,\n    message:\n      'The ACP implementation did not load the active harness-owned MCP ' +\n      `tool catalog to revision ${catalog.revision} before the next ` +\n      'prompt, so host tools cannot be exposed safely.',\n  });\n}\n","sourceCodeStart":36,"sourceCodeEnd":62,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/harness-acp/src/v1/bridge/refresh-host-tool-catalog.ts#L36-L62","documentation":"refreshHostToolCatalog verifies, within a timeout, that the ACP implementation loaded the harness-owned MCP tool catalog up to the current catalog revision before the next prompt. If it did not, the library throws HarnessBridgeCapabilityUnsupportedError because exposing host tools against a stale catalog would be unsafe.","triggerScenarios":"The agent failed to reload/acknowledge the harness MCP tool catalog to catalog.revision within timeoutMs before the next prompt (ensureSession or promptAndRefreshInitialHostToolCatalog paths); slow or unresponsive agent; agent that ignores the catalog-update mechanism.","commonSituations":"Agent version lacking catalog-refresh support; agent busy or hung so the refresh times out; revision churn (frequent tool-catalog changes) outpacing the agent's reload; MCP server startup failure inside the agent.","solutions":["Upgrade the ACP implementation to one that supports loading harness-owned MCP tool catalogs to the requested revision.","Increase timeoutMs if the agent reloads the catalog but slowly.","Check the agent's logs for MCP catalog-load failures and fix the underlying MCP server error.","Reduce catalog revision churn or ensure the catalog is stable before prompting."],"exampleFix":"// before\nawait refreshHostToolCatalog({ agent, catalog, timeoutMs: 1000 }); // too short\n// after\nawait refreshHostToolCatalog({ agent, catalog, timeoutMs: 30000 });","handlingStrategy":"retry","validationCode":"const loaded = await agent.request('tools/catalogStatus', { revision: catalog.revision }).catch(() => null);\nif (loaded?.revision !== catalog.revision) {\n  throw new Error('Agent has not loaded the current tool catalog revision');\n}","typeGuard":null,"tryCatchPattern":"import { HarnessBridgeCapabilityUnsupportedError } from '...';\ntry {\n  await refreshHostToolCatalog({ agent, catalog, timeoutMs });\n} catch (error) {\n  if (HarnessBridgeCapabilityUnsupportedError.isInstance?.(error)) {\n    // degrade: run without host tools, or restart the agent and retry once\n  }\n  throw error;\n}","preventionTips":["Use generous timeoutMs for catalog refresh relative to agent startup time.","Verify the agent version supports harness-owned MCP catalog loading before enabling host tools.","Avoid mutating the catalog immediately before prompts; refresh, await ack, then prompt.","Monitor agent logs for MCP server load failures."],"tags":["acp","mcp","tools","capability","timeout"],"backgroundTag":"unsupported-capability","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}