{"record":{"id":"7f5146822e12cef3","repo":"zylon-ai/private-gpt","slug":"code-execution-provider-name-is-not-registered","errorCode":null,"errorMessage":"Code execution provider '{name}' is not registered. Available: {available}","messagePattern":"Code execution provider '(.+?)' is not registered\\. Available: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":400,"severity":"error","filePath":"private_gpt/components/code_execution/registry.py","lineNumber":32,"sourceCode":"    name: str, provider: CodeExecutionProviderFactory\n) -> None:\n    _PROVIDERS[name] = provider\n\n\nclass CodeExecutionProviderRegistry:\n    def __init__(self, settings: Settings) -> None:\n        self._settings = settings\n        self._providers: dict[str, CodeExecutionProvider] = {}\n\n    def get_provider(self, name: str) -> CodeExecutionProvider:\n        provider = self._providers.get(name)\n        if provider is not None:\n            return provider\n\n        provider_factory = _PROVIDERS.get(name)\n        if provider_factory is None:\n            available = \", \".join(sorted(_PROVIDERS)) or \"none\"\n            raise ValueError(\n                \"Code execution provider \"\n                f\"'{name}' is not registered. Available: {available}\"\n            )\n        provider = provider_factory(self._settings)\n        self._providers[name] = provider\n        return provider\n","sourceCodeStart":14,"sourceCodeEnd":39,"githubUrl":"https://github.com/zylon-ai/private-gpt/blob/4a030776a31a901ad80b1bf4d7faa2c1a367efbb/private_gpt/components/code_execution/registry.py#L14-L39","documentation":"The code-execution registry resolves provider names lazily: it checks its instance cache, then the module-level _PROVIDERS factory map. This ValueError means the requested name is in neither, i.e. the settings reference a provider that this build does not register (typo, renamed provider, or optional provider not compiled in).","triggerScenarios":"Calling registry.get_provider(name) with settings.code_execution.provider set to a name absent from _PROVIDERS (the message lists valid names).","commonSituations":"Typo in the provider setting ('e2b' vs 'sandbox'); upgrading to a version where a provider was renamed or moved behind an optional dependency; copying config between environments with different extras installed.","solutions":["Read the error message: it enumerates the available providers — use one of those names","Fix the typo in the code-execution provider setting","If the provider should exist, check you're on a version that ships it and its extras are installed","Validate the provider name at startup against the registry instead of failing on first use"],"exampleFix":"# before (settings)\ncode_execution:\n  provider: \"dockr\"  # typo\n\n# after\ncode_execution:\n  provider: \"docker\"  # must be one of the names listed in the error","handlingStrategy":"validation","validationCode":"from private_gpt.components.code_execution.registry import _PROVIDERS  # or a public listing API\nname = settings.code_execution.provider\nassert name in _PROVIDERS, f\"unknown provider {name!r}; available: {sorted(_PROVIDERS)}\"","typeGuard":"def is_registered_provider(name: str) -> bool:\n    return name in _PROVIDERS","tryCatchPattern":"try:\n    provider = registry.get_provider(name)\nexcept ValueError as e:\n    if \"is not registered\" in str(e):\n        raise ConfigError(str(e)) from e  # surface as deployment misconfiguration\n    raise","preventionTips":["Validate provider names against the registry at startup, not first use","Pin the provider list in deployment docs per version","After upgrades, re-check that configured provider names still exist"],"tags":["code-execution","configuration","registry","provider"],"backgroundTag":null,"analyzedSha":"4a030776a31a901ad80b1bf4d7faa2c1a367efbb","analyzedAt":"2026-08-15T03:51:26.951Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}