{"record":{"id":"80e429f4d8639661","repo":"ruvnet/ruflo","slug":"tool-authorization-is-required-but-no-authorizer-w","errorCode":null,"errorMessage":"tool authorization is required but no authorizer was provided","messagePattern":"tool authorization is required but no authorizer was provided","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/mcp/src/server.ts","lineNumber":127,"sourceCode":"    total: 0,\n    successful: 0,\n    failed: 0,\n    totalResponseTime: 0,\n  };\n\n  constructor(\n    config: Partial<MCPServerConfig>,\n    private readonly logger: ILogger,\n    private readonly orchestrator?: unknown,\n    private readonly swarmCoordinator?: unknown,\n    toolAuthorizer?: ToolAuthorizer,\n  ) {\n    super();\n    this.config = { ...DEFAULT_CONFIG, ...config } as MCPServerConfig;\n\n    this.toolRegistry = createToolRegistry(logger);\n    if (this.config.requireToolAuthorization && !toolAuthorizer) {\n      throw new Error('tool authorization is required but no authorizer was provided');\n    }\n    this.toolRegistry.setAuthorizer(toolAuthorizer);\n    this.sessionManager = createSessionManager(logger, {\n      maxSessions: 100,\n      sessionTimeout: 30 * 60 * 1000,\n    });\n    this.resourceRegistry = createResourceRegistry(logger, {\n      enableSubscriptions: true,\n      cacheEnabled: true,\n      cacheTTL: 60000,\n    });\n    this.promptRegistry = createPromptRegistry(logger);\n    this.taskManager = createTaskManager(logger, {\n      maxConcurrentTasks: 10,\n      taskTimeout: 300000,\n    });\n    this.transportManager = createTransportManager(logger);\n    this.rateLimiter = createRateLimiter(logger, {","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/mcp/src/server.ts#L109-L145","documentation":"MCPServer was constructed with requireToolAuthorization enabled but no ToolAuthorizer instance was passed. The server refuses to start in a configuration where every tool call would need an authorization decision that no component can make — pass an authorizer or disable the requirement.","triggerScenarios":"The server is configured to require tool authorization but no authorizer callback was supplied.","commonSituations":"requireToolAuthorization is true in server config while the authorizer option is omitted.","solutions":["Provide an authorizer function in the server configuration that approves or denies tool calls.","Set requireToolAuthorization to false only when authorization is genuinely not required."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}