{"record":{"id":"cc76becef80c6db8","repo":"crewAIInc/crewAI","slug":"knowledge-base-id-must-contain-only-alphanumeric-c","errorCode":null,"errorMessage":"knowledge_base_id must contain only alphanumeric characters","messagePattern":"knowledge_base_id must contain only alphanumeric characters","errorType":"validation","errorClass":"BedrockValidationError","httpStatus":null,"severity":"error","filePath":"lib/crewai-tools/src/crewai_tools/aws/bedrock/knowledge_base/retriever_tool.py","lineNumber":101,"sourceCode":"\n        if self.number_of_results is not None:\n            vector_search_config[\"numberOfResults\"] = self.number_of_results\n\n        return {\"vectorSearchConfiguration\": vector_search_config}\n\n    def _validate_parameters(self) -> None:\n        \"\"\"Validate the parameters according to AWS API requirements.\"\"\"\n        try:\n            if not self.knowledge_base_id:\n                raise BedrockValidationError(\"knowledge_base_id cannot be empty\")\n            if not isinstance(self.knowledge_base_id, str):\n                raise BedrockValidationError(\"knowledge_base_id must be a string\")\n            if len(self.knowledge_base_id) > 10:\n                raise BedrockValidationError(\n                    \"knowledge_base_id must be 10 characters or less\"\n                )\n            if not all(c.isalnum() for c in self.knowledge_base_id):\n                raise BedrockValidationError(\n                    \"knowledge_base_id must contain only alphanumeric characters\"\n                )\n\n            if self.next_token:\n                if not isinstance(self.next_token, str):\n                    raise BedrockValidationError(\"next_token must be a string\")\n                if len(self.next_token) < 1 or len(self.next_token) > 2048:\n                    raise BedrockValidationError(\n                        \"next_token must be between 1 and 2048 characters\"\n                    )\n                if \" \" in self.next_token:\n                    raise BedrockValidationError(\"next_token cannot contain spaces\")\n\n            if self.number_of_results is not None:\n                if not isinstance(self.number_of_results, int):\n                    raise BedrockValidationError(\"number_of_results must be an integer\")\n                if self.number_of_results < 1:\n                    raise BedrockValidationError(","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/crewAIInc/crewAI/blob/754d7323beb2fd042e33444a115ea2d5a47193f0/lib/crewai-tools/src/crewai_tools/aws/bedrock/knowledge_base/retriever_tool.py#L83-L119","documentation":"A BedrockValidationError raised when knowledge_base_id contains characters other than ASCII alphanumerics (checked with `all(c.isalnum() ...)`). AWS KB IDs are strictly [0-9A-Za-z]{10}; anything else — hyphens, underscores, punctuation, whitespace — fails this check and is re-wrapped by the validation wrapper.","triggerScenarios":"Passing an ID containing '-', '_', ':', '/', spaces, or Unicode characters — e.g. a slugified name 'my-kb-prod', an ARN fragment, or a copy-pasted ID with invisible whitespace. Note isalnum() also accepts Unicode letters/digits, which AWS rejects.","commonSituations":"Using internal naming conventions with hyphens and assuming they are valid IDs; pasting from rich-text/chat clients that introduce non-breaking spaces; non-ASCII environments producing Unicode digits.","solutions":["Use the exact console-provided ID: 10 chars of [A-Z0-9] (typically uppercase).","Sanitize config-sourced values: kb_id.strip() and reject if not re.fullmatch(r'[A-Za-z0-9]{10}', kb_id).","Do not construct IDs from names/slugs — always look up the real ID."],"exampleFix":"# before\ntool = BedrockKBRetrieverTool(knowledge_base_id=\"my-kb-prod\")\n\n# after\nimport re\nkb_id = \"my-kb-prod\"  # name, not ID — look up the real one\nassert re.fullmatch(r\"[A-Za-z0-9]{10}\", kb_id), \"expected a real KB ID\"\ntool = BedrockKBRetrieverTool(knowledge_base_id=kb_id)","handlingStrategy":"validation","validationCode":"import re\n\nif not re.fullmatch(r\"[A-Za-z0-9]{10}\", kb_id):\n    raise ValueError(f\"knowledge_base_id must be 10 alphanumeric chars, got: {kb_id!r}\")","typeGuard":"def is_kb_id(v) -> bool:\n    import re\n    return isinstance(v, str) and bool(re.fullmatch(r\"[A-Za-z0-9]{10}\", v))","tryCatchPattern":"try:\n    tool = BedrockKBRetrieverTool(knowledge_base_id=kb_id)\nexcept BedrockValidationError as e:\n    if \"alphanumeric\" in str(e):\n        raise ValueError(\"KB ID contains invalid characters (hyphen/space/ARN?)\") from e\n    raise","preventionTips":["Validate with re.fullmatch(r'[A-Za-z0-9]{10}', kb_id) at config load.","Never synthesize IDs from slugs/names — look up the real console ID.","Beware invisible characters when pasting IDs from chat/web UIs."],"tags":["aws","bedrock","knowledge-base","validation","format"],"backgroundTag":null,"analyzedSha":"754d7323beb2fd042e33444a115ea2d5a47193f0","analyzedAt":"2026-08-15T04:06:56.746Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}