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

_load_shell_allow_list looks up the shell.allow_list option in the package's configuration manifest before resolving its value. If the manifest no longer declares that option, the lookup returns None and a RuntimeError is raised. This indicates an internal/manifest mismatch — the app or a plugin expects an option that the installed configuration schema does not define.

Source

Thrown at libs/code/deepagents_code/app.py:436

    return value


def _load_shell_allow_list() -> list[str] | None:
    """Resolve the shell command allow-list from the shared resolver.

    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 _load_float_option(
    key: str,
    default: float,
    *,
    label: str,
    minimum: float | None = None,
) -> float:
    """Resolve a float config option, falling back to *default* when unusable.

    Args:
        key: Manifest option key.
        default: Value used when the option is absent or fails validation.
        label: Human-readable option name for the invalid-value warning.

View on GitHub (pinned to a1af029e6e)

Solutions

  1. Reinstall or resync the deepagents_code package so the code and config manifest come from the same version.
  2. If you ship a custom configuration manifest, re-add the shell.allow_list option definition.
  3. Check that no local module named config_manifest.py shadows deepagents_code.config_manifest on sys.path.

Example fix

# before (dev checkout with stale metadata)
pip install -e libs/code --no-deps

# after (full resync)
uv sync && pip install -e libs/code
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("shell.allow_list not in manifest — reinstall/repair deepagents_code")

Prevention

When it happens

Trigger: _request_approval calls _load_shell_allow_list while get_option("shell.allow_list") returns None — i.e., the installed package's config manifest does not contain the shell.allow_list entry.

Common situations: Version skew between deepagents_code and deepagents_code.config_manifest (partial install, stale egg-info, or a dev install where the manifest schema was updated); a custom/overridden manifest that dropped the option; shadowing the config_manifest module with a local file.

Related errors


AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29). Data as JSON: /api/errors/3b02d569d1f3a335. Report an issue: GitHub.