langchain-ai/deepagents · error · RuntimeError

manifest option 'interpreter.enable_interpreter' is missing;

Error message

manifest option 'interpreter.enable_interpreter' is missing; refusing to enable the interpreter without managed-policy input

What it means

`_resolve_interpreter_enabled` raises `RuntimeError` when the manifest option `interpreter.enable_interpreter` cannot be found. Because interpreter enablement is governed by a managed policy ranking, the code refuses to enable the interpreter without that managed-policy input rather than falling back to an unsafe default.

Source

Thrown at libs/code/deepagents_code/main.py:1194

    Returns:
        Whether the JS interpreter is enabled for this invocation.

    Raises:
        RuntimeError: If the manifest is missing the option, which is a
            programming error rather than a runtime condition. Defaulting to
            `True` here would enable JS execution for an enforced key.
    """
    from deepagents_code.config_manifest import _emit_ranked_diagnostics, get_option
    from deepagents_code.configuration.resolver import CLI_RANK, MANAGED_RANK

    option = get_option("interpreter.enable_interpreter")
    if option is None:
        msg = (
            "manifest option 'interpreter.enable_interpreter' is missing; "
            "refusing to enable the interpreter without managed-policy input"
        )
        raise RuntimeError(msg)
    resolved = _resolver_for_args(args).get(option)
    _emit_ranked_diagnostics(option, resolved)
    sandbox = getattr(args, "sandbox", None)
    remote_sandbox = bool(sandbox) and sandbox != "none"
    deciding_rank = next(
        (rank for rank in resolved.ranks if rank in {MANAGED_RANK, CLI_RANK}), None
    )
    if deciding_rank is not None:
        enabled = bool(resolved.value)
        if enabled and remote_sandbox:
            if not strict:
                # Same explanation, no abort: a listing that silently drops the
                # interpreter reads as "policy disabled it", which is the one
                # conclusion a user debugging a missing tool must not draw.
                conflict = _interpreter_sandbox_conflict(sandbox, deciding_rank)
                sys.stderr.write(f"Warning: {conflict}\n")
                return False
            _exit_interpreter_conflicts_with_sandbox(sandbox, deciding_rank)

View on GitHub (pinned to a1af029e6e)

Solutions

  1. Reinstall the package so the bundled manifest contains `interpreter.enable_interpreter`
  2. Regenerate the manifest in a development checkout so the interpreter option is registered
  3. Check for code/tests stubbing `get_option` and restore the entry

Example fix

// before
options = [o for o in manifest if o["name"] != "interpreter.enable_interpreter"]
// after
options.append({"name": "interpreter.enable_interpreter", "type": "bool", "default": False})
Defensive patterns

Strategy: validation

Validate before calling

from deepagents_code.config_manifest import get_option

if get_option("interpreter.enable_interpreter") is None:
    raise SystemExit(
        "manifest missing interpreter.enable_interpreter; reinstall package"
    )

Try / catch

try:
    enabled = _resolve_interpreter_enabled(args)
except RuntimeError as exc:
    logger.error("cannot resolve interpreter policy: %s", exc)
    enabled = False  # safe default: interpreter off

Prevention

When it happens

Trigger: Any code path that resolves interpreter enablement — `cli_main`, `_run_tools_list`, or tests — running against a manifest that lacks the `interpreter.enable_interpreter` entry (stale/mismatched manifest or stripped distribution).

Common situations: Same family as [321]: partial upgrades leaving an old manifest on disk, custom builds that removed the option, or monkeypatched `get_option` in tests returning `None`.

Related errors


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