langchain-ai/deepagents · error · RuntimeError
shell.allow_list is missing from the configuration manifest
Error message
shell.allow_list is missing from the configuration manifest
What it means
`_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.
Source
Thrown at libs/code/deepagents_code/client/non_interactive.py:1687
)
def _resolve_shell_allow_list() -> list[str] | None:
"""Resolve the non-interactive shell policy.
Returns:
The configured allow-list, or `None` when shell access is disabled.
Raises:
RuntimeError: If the option is absent from the manifest.
"""
from deepagents_code.config_manifest import _emit_ranked_diagnostics, get_option
from deepagents_code.configuration.resolver import get_config_resolver
option = get_option("shell.allow_list")
if option is None:
msg = "shell.allow_list is missing from the configuration manifest"
raise RuntimeError(msg)
resolved = get_config_resolver().get(option)
_emit_ranked_diagnostics(option, resolved)
return cast("list[str] | None", resolved.value)
def _make_hitl_decision(
action_request: ActionRequest, console: Console
) -> dict[str, str]:
"""Decide whether to approve or reject a single action request.
This function is only invoked when a restrictive shell allow-list is
configured (not `all`). When shell is disabled or unrestricted,
`interrupt_on` is empty and this function is bypassed entirely.
Shell tools are always gated: if an allow-list is configured, the command
is validated against it; if no allow-list is configured, shell commands
are rejected outright (defense-in-depth — the caller should disable
shell tools when no allow-list is present, but this function failsView on GitHub (pinned to a1af029e6e)
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.
Example fix
// before: stale mixed install pip show deepagents-code # version X, but manifest lacks shell.allow_list // after pip install --force-reinstall deepagents-code==<same-latest-version>
Defensive patterns
Strategy: validation
Validate before calling
from deepagents_code.config_manifest import get_option
if get_option("shell.allow_list") is None:
raise SystemExit("config manifest is incomplete: reinstall deepagents-code") Try / catch
try:
run_non_interactive(task)
except RuntimeError as exc:
if "missing from the configuration manifest" in str(exc):
reinstall_or_report(exc) # version-consistency fault, not user error Prevention
- 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
When it happens
Trigger: `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.
Common situations: 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.
Related errors
- MODE_PREFIXES and MODE_DISPLAY_GLYPHS have mismatched keys:
- modes can only be provided when agent is a factory
- models can only be provided when agent is a factory
- -32601
- -32002
AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29).
Data as JSON: /api/errors/2c1ae158987693ef.
Report an issue: GitHub.