{"record":{"id":"8e37195afdd07e22","repo":"langchain-ai/deepagents","slug":"skipping-group-plugin-plugin-label-registrati","errorCode":null,"errorMessage":"Skipping {group} plugin {plugin_label}: registration callable {ep.value!r} raised: {type(exc).__name__}: {exc}","messagePattern":"Skipping (.+?) plugin (.+?): registration callable (.+?) raised: (.+?): (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"libs/deepagents/deepagents/profiles/_builtin_profiles.py","lineNumber":236,"sourceCode":"        plugin_label = _format_plugin_label(ep)\n        try:\n            register = ep.load()\n        except Exception as exc:\n            msg = f\"Skipping {group} plugin {plugin_label}: failed to load entry point {ep.value!r}: {type(exc).__name__}: {exc}\"\n            logger.exception(msg)\n            warnings.warn(msg, stacklevel=2)\n            continue\n        if not callable(register):\n            msg = f\"Skipping {group} plugin {plugin_label}: entry point {ep.value!r} did not resolve to a callable.\"\n            logger.error(msg)\n            warnings.warn(msg, stacklevel=2)\n            continue\n        try:\n            register()\n        except Exception as exc:\n            msg = f\"Skipping {group} plugin {plugin_label}: registration callable {ep.value!r} raised: {type(exc).__name__}: {exc}\"\n            logger.exception(msg)\n            warnings.warn(msg, stacklevel=2)\n","sourceCodeStart":218,"sourceCodeEnd":237,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/deepagents/deepagents/profiles/_builtin_profiles.py#L218-L237","documentation":"A warning emitted when a profile plugin's entry point loads successfully and resolves to a callable, but invoking that registration callable raises. The plugin's registrations are silently absent from deepagents, so this is logged at ERROR with a traceback to make the loss visible. Only the offending plugin is skipped; others in the group load normally.","triggerScenarios":"During `_invoke_profile_plugins`, the loaded `register()` hook raises at call time — e.g. the plugin registers a provider profile with invalid data (`ValueError`/`TypeError`), or its registration code touches unavailable state (missing env vars, incompatible deepagents registration API).","commonSituations":"A plugin written for a different deepagents version calling a changed `register_*_profile` signature; a plugin requiring configuration (API keys, env vars) not present in the environment; a genuine bug in the plugin's registration logic.","solutions":["Read the ERROR log traceback to see the exception raised inside the plugin's registration callable.","Fix the plugin's `register` function (validate inputs, guard optional config) if it is your own code.","Check required environment variables / configuration the plugin expects and supply them.","Upgrade or downgrade the plugin to match your installed deepagents version's registration API.","Uninstall the plugin if its profiles aren't needed — the rest of the group still registers."],"exampleFix":"# before (plugin side)\ndef register():\n    register_provider_profile(name=\"x\", model=os.environ[\"MISSING_KEY_MODEL\"])  # KeyError\n\n# after\ndef register():\n    model = os.environ.get(\"MISSING_KEY_MODEL\")\n    if not model:\n        return  # or raise a clear, documented error\n    register_provider_profile(name=\"x\", model=model)","handlingStrategy":"try-catch","validationCode":"from importlib.metadata import entry_points\nfor ep in entry_points(group='deepagents.provider_profiles'):\n    register = ep.load()\n    if callable(register):\n        try:\n            register()\n        except Exception as e:\n            print(f\"plugin {ep.value!r} registration will fail: {type(e).__name__}: {e}\")","typeGuard":"def registers_cleanly(entry_point) -> bool:\n    try:\n        hook = entry_point.load()\n        if not callable(hook):\n            return False\n        hook()\n        return True\n    except Exception:\n        return False","tryCatchPattern":"import warnings\nwith warnings.catch_warnings(record=True) as caught:\n    warnings.simplefilter(\"always\")\n    load_app()\nfailed = [str(w.message) for w in caught if \"registration callable\" in str(w.message)]\nif failed:\n    fix_or_uninstall_plugins(failed)  # tracebacks are in the ERROR log lines","preventionTips":["Validate inputs and required env vars inside plugin register() hooks; fail with clear messages.","Keep plugin registration code side-effect-free apart from the registry merge.","Test plugins against the deepagents version range you claim to support.","Check the ERROR logs at startup — registered profiles silently missing means a plugin crashed.","Pin plugin versions in lockfiles so registration behavior is reproducible."],"tags":["plugins","entry-points","registration","configuration","python"],"backgroundTag":"plugin-registration-crashed","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}