{"record":{"id":"fd72b5651df24231","repo":"langchain-ai/deepagents","slug":"unknown-sandbox-provider-name-available-provid","errorCode":null,"errorMessage":"Unknown sandbox provider: {name}. Available providers: {', '.join(self.available_providers())}","messagePattern":"Unknown sandbox provider: (.+?)\\. Available providers: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"libs/code/deepagents_code/integrations/sandbox_registry.py","lineNumber":295,"sourceCode":"        if config_entry is not None:\n            class_path = config_entry.get(\"class_path\")\n            if not class_path:\n                msg = f\"Sandbox provider '{name}' config is missing 'class_path'\"\n                raise ValueError(msg)\n            return _load_class(class_path)()\n\n        entry = self._entry_points.get(name)\n        if entry is not None:\n            return entry.load()()\n\n        if name in BUILTIN_METADATA:\n            return _create_builtin_provider(name)\n\n        msg = (\n            f\"Unknown sandbox provider: {name}. \"\n            f\"Available providers: {', '.join(self.available_providers())}\"\n        )\n        raise ValueError(msg)\n\n    def provider_metadata(self, name: str) -> SandboxProviderMetadata:\n        \"\"\"Return authoritative metadata for `name`.\n\n        Config providers are described statically. Entry-point providers are\n        instantiated so capability flags they expose via a `metadata` attribute\n        take effect; on failure this falls back to the static placeholder.\n        Built-in metadata is used only when no entry point overrides that name.\n\n        Args:\n            name: Provider name.\n\n        Returns:\n            The provider's metadata.\n\n        Raises:\n            ValueError: If `name` is unknown.\n        \"\"\"","sourceCodeStart":277,"sourceCodeEnd":313,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/code/deepagents_code/integrations/sandbox_registry.py#L277-L313","documentation":"`SandboxRegistry.create_provider` resolves providers from config, entry points, and builtins. When `name` matches none of these sources, ValueError is raised listing all currently available provider names so the caller can correct the request.","triggerScenarios":"`create_provider('vercel')` when the Vercel package isn't installed (no entry point registered) or any misspelled/unregistered name passed to `create_provider`, `_get_provider`, or `provider_metadata`.","commonSituations":"Typos in the sandbox provider setting, using a provider before installing its package (entry point not discovered), provider renamed across library versions, running in an env where optional providers were never registered.","solutions":["Use one of the names listed in the error's `Available providers:` output.","Install the provider's package so its entry point is discovered (e.g. `pip install <sandbox-package>`).","Register the provider in config with a valid `class_path` or via entry points.","Check for renames if upgrading the library and update the configured name."],"exampleFix":"# before\nprovider = registry.create_provider('vercel')  # unknown\n# after\n$ pip install vercel-sandbox  # or use an available name\nprovider = registry.create_provider('vercel')","handlingStrategy":"validation","validationCode":"registry = SandboxRegistry()\nif provider_name not in registry.available_providers():\n    raise ConfigError(\n        f\"'{provider_name}' not available; choose from {registry.available_providers()}\"\n    )","typeGuard":null,"tryCatchPattern":"try:\n    provider = registry.create_provider(name)\nexcept ValueError as exc:\n    print(exc)  # includes 'Available providers: ...'\n    name = prompt_user_for_provider(registry.available_providers())","preventionTips":["Check registry.available_providers() before wiring a provider name","Install the optional package for entry-point providers before use","Grep config for provider names after library upgrades to catch renames"],"tags":["python","sandbox","config","unknown-provider"],"backgroundTag":"unknown-provider","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}