{"record":{"id":"4e85d6fe3a8961a4","repo":"crewAIInc/crewAI","slug":"knowledge-base-id-must-be-10-characters-or-less","errorCode":null,"errorMessage":"knowledge_base_id must be 10 characters or less","messagePattern":"knowledge_base_id must be 10 characters or less","errorType":"validation","errorClass":"BedrockValidationError","httpStatus":null,"severity":"error","filePath":"lib/crewai-tools/src/crewai_tools/aws/bedrock/knowledge_base/retriever_tool.py","lineNumber":97,"sourceCode":"        Returns:\n            Dict[str, Any]: The constructed retrieval configuration\n        \"\"\"\n        vector_search_config = {}\n\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:","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/crewAIInc/crewAI/blob/754d7323beb2fd042e33444a115ea2d5a47193f0/lib/crewai-tools/src/crewai_tools/aws/bedrock/knowledge_base/retriever_tool.py#L79-L115","documentation":"A BedrockValidationError raised when knowledge_base_id exceeds 10 characters. AWS Bedrock knowledge base IDs are fixed at 10 alphanumeric characters, so the tool enforces len(knowledge_base_id) <= 10 during construction; failures are re-wrapped into \"Parameter validation failed: knowledge_base_id must be 10 characters or less\".","triggerScenarios":"Passing a string longer than 10 chars: a knowledge base name, an ARN ('arn:aws:bedrock:...:knowledge-base/XXXX'), a UUID, or an ID with extra whitespace/paste artifacts.","commonSituations":"Copying the human-readable KB name or full ARN from the console instead of the short ID; concatenating a prefix like 'kb-' onto the ID; trailing newline from a config file.","solutions":["Use the bare 10-char ID (console > Knowledge bases > Knowledge base ID), not the name or ARN.","Strip whitespace from config-sourced IDs: knowledge_base_id=raw.strip().","If extracting from an ARN, take the segment after the last '/'."],"exampleFix":"# before\ntool = BedrockKBRetrieverTool(knowledge_base_id=\"arn:aws:bedrock:us-east-1:123456789012:knowledge-base/HHTQ7DFZLV\")\n\n# after\ntool = BedrockKBRetrieverTool(knowledge_base_id=\"HHTQ7DFZLV\")","handlingStrategy":"validation","validationCode":"import re\n\nif \"/\" in kb_id:  # ARN passed by mistake\n    kb_id = kb_id.rsplit(\"/\", 1)[-1]\nif len(kb_id) > 10:\n    raise ValueError(f\"'{kb_id}' looks like a name/ARN, not a 10-char KB ID\")","typeGuard":"def is_kb_id(v) -> bool:\n    return isinstance(v, str) and len(v) <= 10","tryCatchPattern":"try:\n    tool = BedrockKBRetrieverTool(knowledge_base_id=kb_id)\nexcept BedrockValidationError as e:\n    if \"10 characters or less\" in str(e):\n        raise ValueError(\"You likely passed a KB name or ARN — use the 10-char ID\") from e\n    raise","preventionTips":["Store only the bare 10-char ID in config, never ARNs or names.","Strip whitespace from config-sourced IDs.","Add a regex check ([A-Za-z0-9]{10}) to your config validation."],"tags":["aws","bedrock","knowledge-base","validation","arn"],"backgroundTag":null,"analyzedSha":"754d7323beb2fd042e33444a115ea2d5a47193f0","analyzedAt":"2026-08-15T04:06:56.746Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}