{"record":{"id":"337fe43e70dea813","repo":"ComposioHQ/composio","slug":"local-tool-resolution-finalslug-is-not-supporte","errorCode":null,"errorMessage":"Local tool ${resolution.finalSlug} is not supported on ${resolution.currentPlatform}. Supported platforms: ${formatSupportedPlatforms(resolution.tool.platforms)}.","messagePattern":"Local tool (.+?) is not supported on (.+?)\\. Supported platforms: (.+?)\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"ts/packages/cli-local-tools/src/registry.ts","lineNumber":233,"sourceCode":"  });\n  if (!resolution) return null;\n  return {\n    finalSlug: resolution.finalSlug,\n    toolkit: resolution.toolkit.slug,\n    schema: toCustomTool(resolution.toolkit, resolution.tool, resolution.currentPlatform)\n      .inputSchema,\n    version: 'local',\n  };\n};\n\nexport const executeLocalToolBySlug = async (\n  slug: string,\n  args: Record<string, unknown>\n): Promise<Record<string, unknown> | null> => {\n  const resolution = resolveLocalTool(slug, { includeUnsupported: true });\n  if (!resolution) return null;\n  if (!resolution.supported) {\n    throw new Error(\n      `Local tool ${resolution.finalSlug} is not supported on ${resolution.currentPlatform}. Supported platforms: ${formatSupportedPlatforms(resolution.tool.platforms)}.`\n    );\n  }\n\n  const parsed = resolution.tool.inputParams.safeParse(args);\n  if (!parsed.success) {\n    throw new Error(\n      `Invalid arguments for local tool ${resolution.finalSlug}: ${parsed.error.issues\n        .map(issue => `${issue.path.join('.') || '<root>'}: ${issue.message}`)\n        .join('; ')}`\n    );\n  }\n\n  return executeLocalTool(resolution.tool.execution, parsed.data as Record<string, unknown>, {\n    toolkit: resolution.toolkit,\n    tool: resolution.tool,\n    finalSlug: resolution.finalSlug,\n    platform: resolution.currentPlatform,","sourceCodeStart":215,"sourceCodeEnd":251,"githubUrl":"https://github.com/ComposioHQ/composio/blob/64b1b85502b1beeb2379e6c9e8bf1104504fa637/ts/packages/cli-local-tools/src/registry.ts#L215-L251","documentation":"Thrown by executeLocalToolBySlug when the resolved local tool is declared as platform-restricted and the current OS/platform is not in its supported list. Resolution is done with includeUnsupported: true so the tool can be found, then explicitly rejected before execution. The message lists the tool's supported platforms.","triggerScenarios":"Calling a Composio CLI local tool (e.g. an iMessage/Beeper tool that only supports darwin) on an unsupported OS such as Linux or Windows; calling executeLocalToolBySlug('beeper-imessage__send_message', ...) from a non-macOS environment.","commonSituations":"Developing on Linux/Windows but running a macOS-only toolkit; CI pipelines running CLI local tools; Docker containers without platform-matching binaries.","solutions":["Check the tool's platforms list in the error message and run on a supported OS","Guard with isLocalToolSupported(slug) (or check tool.platforms) before invoking","Use a remote/cloud equivalent tool instead of the local one","Skip the tool conditionally based on process.platform"],"exampleFix":"// before\nawait executeLocalToolBySlug('imessage__send', args);\n// after\nconst resolution = resolveLocalTool('imessage__send');\nif (resolution?.supported) {\n  await executeLocalToolBySlug('imessage__send', args);\n} else {\n  console.log(`unsupported on ${process.platform}`);\n}","handlingStrategy":"type-guard","validationCode":"import { resolveLocalTool } from '@composio/cli-local-tools';\nconst ok = resolveLocalTool(slug)?.supported === true;","typeGuard":"const isSupportedHere = (slug: string) =>\n  resolveLocalTool(slug, { includeUnsupported: true })?.supported === true;","tryCatchPattern":"try { await executeLocalToolBySlug(slug, args); } catch (e) { if (e instanceof Error && e.message.includes('is not supported on')) { /* skip or fallback */ } }","preventionTips":["Check tool.platforms against process.platform before enabling the tool for agents","Gate macOS-only tools behind runtime platform detection"],"tags":["local-tools","platform","cli","typescript"],"backgroundTag":"platform-not-supported","analyzedSha":"64b1b85502b1beeb2379e6c9e8bf1104504fa637","analyzedAt":"2026-08-28T15:39:33.623Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}