{"record":{"id":"32b3d1c617a19bd0","repo":"Budibase/budibase","slug":"tool-is-not-available-in-this-security-context","errorCode":null,"errorMessage":"Tool is not available in this security context","messagePattern":"Tool is not available in this security context","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/server/src/ai/tools/authorization.ts","lineNumber":112,"sourceCode":"      effectivePrincipal: principal,\n      agentId: executionContext.agentId,\n      operationId: executionContext.operationId,\n      conversationId: executionContext.conversationId,\n      workspaceId: executionContext.workspaceId,\n      resourceId,\n      permissionType: authorization.permissionType,\n      permissionLevel: authorization.permissionLevel,\n    })\n  }\n\n  const resourceId =\n    authorization.resourceId || authorization.resolveResourceId?.(input)\n  try {\n    if (\n      context.getTenantId() !== executionContext.tenantId ||\n      context.getWorkspaceId() !== executionContext.workspaceId\n    ) {\n      throw new Error(DENIED_MESSAGE)\n    }\n\n    const { requester } = executionContext\n    const isElevatedExecution = principal === ToolExecutionPrincipal.ADMIN\n    if (isElevatedExecution) {\n      audit(\"allowed\", resourceId)\n      return\n    }\n\n    const userRoles = await roles.getUserRoleHierarchy(requester.executorRole)\n    if (resourceId) {\n      const resourcePermissions =\n        await sdk.permissions.getResourcePerms(resourceId)\n      const allowedRole =\n        resourcePermissions[authorization.permissionLevel]?.role\n      if (allowedRole) {\n        if (userRoles.some(role => role._id === allowedRole)) {\n          audit(\"allowed\", resourceId)","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/Budibase/budibase/blob/a81a902e9a8fe55b467d106765f6638f12e35c49/packages/server/src/ai/tools/authorization.ts#L94-L130","documentation":"Error \"Tool is not available in this security context\" thrown in Budibase/budibase.","triggerScenarios":"Thrown at packages/server/src/ai/tools/authorization.ts:112 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a81a902e9a8fe55b467d106765f6638f12e35c49","analyzedAt":"2026-08-29T01:03:10.972Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}