{"record":{"id":"2c1ae158987693ef","repo":"langchain-ai/deepagents","slug":"shell-allow-list-is-missing-from-the-configuration-2c1ae1","errorCode":null,"errorMessage":"shell.allow_list is missing from the configuration manifest","messagePattern":"shell\\.allow_list is missing from the configuration manifest","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"libs/code/deepagents_code/client/non_interactive.py","lineNumber":1687,"sourceCode":"        )\n\n\ndef _resolve_shell_allow_list() -> list[str] | None:\n    \"\"\"Resolve the non-interactive shell policy.\n\n    Returns:\n        The configured allow-list, or `None` when shell access is disabled.\n\n    Raises:\n        RuntimeError: If the option is absent from the manifest.\n    \"\"\"\n    from deepagents_code.config_manifest import _emit_ranked_diagnostics, get_option\n    from deepagents_code.configuration.resolver import get_config_resolver\n\n    option = get_option(\"shell.allow_list\")\n    if option is None:\n        msg = \"shell.allow_list is missing from the configuration manifest\"\n        raise RuntimeError(msg)\n    resolved = get_config_resolver().get(option)\n    _emit_ranked_diagnostics(option, resolved)\n    return cast(\"list[str] | None\", resolved.value)\n\n\ndef _make_hitl_decision(\n    action_request: ActionRequest, console: Console\n) -> dict[str, str]:\n    \"\"\"Decide whether to approve or reject a single action request.\n\n    This function is only invoked when a restrictive shell allow-list is\n    configured (not `all`). When shell is disabled or unrestricted,\n    `interrupt_on` is empty and this function is bypassed entirely.\n\n    Shell tools are always gated: if an allow-list is configured, the command\n    is validated against it; if no allow-list is configured, shell commands\n    are rejected outright (defense-in-depth — the caller should disable\n    shell tools when no allow-list is present, but this function fails","sourceCodeStart":1669,"sourceCodeEnd":1705,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/code/deepagents_code/client/non_interactive.py#L1669-L1705","documentation":"`_resolve_shell_allow_list` reads the `shell.allow_list` option through the configuration manifest (`get_option`); if the option is absent from the manifest it raises `RuntimeError`. This is an internal-consistency guard: the code expects the manifest to declare this option, so a missing entry means a broken/incomplete install or manifest.","triggerScenarios":"`get_option(\"shell.allow_list\")` returns `None` while resolving the shell allow list during `_make_hitl_decision` or `run_non_interactive` — i.e. the installed `config_manifest` does not register the `shell.allow_list` option.","commonSituations":"Partially upgraded packages where `deepagents_code.config_manifest` and `client.non_interactive` versions are out of sync; vendored or monkey-patched manifest registries that dropped the option; import shadowing by a stale local `config_manifest` module.","solutions":["Reinstall/upgrade `deepagents-code` so the config manifest and client code come from the same version.","Check that no local module named `deepagents_code/config_manifest.py` shadows the real one.","Verify `shell.allow_list` is registered in the package's manifest definitions and, if this is a fork, add the option to the manifest.","Clear stale build artifacts (`*.egg-info`, `__pycache__`) and reinstall."],"exampleFix":"// before: stale mixed install\npip show deepagents-code  # version X, but manifest lacks shell.allow_list\n// after\npip install --force-reinstall deepagents-code==<same-latest-version>","handlingStrategy":"validation","validationCode":"from deepagents_code.config_manifest import get_option\nif get_option(\"shell.allow_list\") is None:\n    raise SystemExit(\"config manifest is incomplete: reinstall deepagents-code\")","typeGuard":null,"tryCatchPattern":"try:\n    run_non_interactive(task)\nexcept RuntimeError as exc:\n    if \"missing from the configuration manifest\" in str(exc):\n        reinstall_or_report(exc)  # version-consistency fault, not user error","preventionTips":["Pin client and manifest code to the same package version","Avoid shadowing `deepagents_code.config_manifest` with local modules","Clean stale egg-info/build artifacts before reinstalling"],"tags":["config","manifest","shell","internal-consistency"],"backgroundTag":"missing-config-option","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}