{"record":{"id":"06572e8693c7d43a","repo":"langchain-ai/langgraph","slug":"invalid-filter-key-key-filter-keys-must-cont","errorCode":null,"errorMessage":"Invalid filter key: '{key}'. Filter keys must contain only alphanumeric characters, underscores, dots, and hyphens.","messagePattern":"Invalid filter key: '(.+?)'\\. Filter keys must contain only alphanumeric characters, underscores, dots, and hyphens\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"libs/checkpoint-sqlite/langgraph/checkpoint/sqlite/utils.py","lineNumber":26,"sourceCode":"from langchain_core.runnables import RunnableConfig\nfrom langgraph.checkpoint.base import get_checkpoint_id\n\n_FILTER_PATTERN = re.compile(r\"^[a-zA-Z0-9_.-]+$\")\n\n\ndef _validate_filter_key(key: str) -> None:\n    \"\"\"Validate that a filter key is safe for use in SQL queries.\n\n    Args:\n        key: The filter key to validate\n\n    Raises:\n        ValueError: If the key contains invalid characters that could enable SQL injection\n    \"\"\"\n    # Allow alphanumeric characters, underscores, dots, and hyphens\n    # This covers typical JSON property names while preventing SQL injection\n    if not _FILTER_PATTERN.match(key):\n        raise ValueError(\n            f\"Invalid filter key: '{key}'. Filter keys must contain only alphanumeric characters, underscores, dots, and hyphens.\"\n        )\n\n\ndef _metadata_predicate(\n    metadata_filter: dict[str, Any],\n) -> tuple[Sequence[str], Sequence[Any]]:\n    \"\"\"Return WHERE clause predicates for (a)search() given metadata filter.\n\n    This method returns a tuple of a string and a tuple of values. The string\n    is the parametered WHERE clause predicate (excluding the WHERE keyword):\n    \"column1 = ? AND column2 IS ?\". The tuple of values contains the values\n    for each of the corresponding parameters.\n    \"\"\"\n\n    def _where_value(query_value: Any) -> tuple[str, Any]:\n        \"\"\"Return tuple of operator and value for WHERE clause predicate.\"\"\"\n        if query_value is None:","sourceCodeStart":8,"sourceCodeEnd":44,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/checkpoint-sqlite/langgraph/checkpoint/sqlite/utils.py#L8-L44","documentation":"Error \"Invalid filter key: '{key}'. Filter keys must contain only alphanumeric characters, underscores, dots, and hyphens.\" thrown in langchain-ai/langgraph.","triggerScenarios":"Thrown at libs/checkpoint-sqlite/langgraph/checkpoint/sqlite/utils.py:26 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":"38031739e551638e373fb553453256c23feeb41f","analyzedAt":"2026-08-26T18:02:49.312Z","schemaVersion":2},"datasetVersion":"2026-08-26T21:11:00.512Z"}