{"record":{"id":"2132b9bc1cba8b10","repo":"langchain-ai/deepagents","slug":"manifest-option-interpreter-enable-interpreter-i","errorCode":null,"errorMessage":"manifest option 'interpreter.enable_interpreter' is missing; refusing to enable the interpreter without managed-policy input","messagePattern":"manifest option 'interpreter\\.enable_interpreter' is missing; refusing to enable the interpreter without managed-policy input","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"libs/code/deepagents_code/main.py","lineNumber":1194,"sourceCode":"\n    Returns:\n        Whether the JS interpreter is enabled for this invocation.\n\n    Raises:\n        RuntimeError: If the manifest is missing the option, which is a\n            programming error rather than a runtime condition. Defaulting to\n            `True` here would enable JS execution for an enforced key.\n    \"\"\"\n    from deepagents_code.config_manifest import _emit_ranked_diagnostics, get_option\n    from deepagents_code.configuration.resolver import CLI_RANK, MANAGED_RANK\n\n    option = get_option(\"interpreter.enable_interpreter\")\n    if option is None:\n        msg = (\n            \"manifest option 'interpreter.enable_interpreter' is missing; \"\n            \"refusing to enable the interpreter without managed-policy input\"\n        )\n        raise RuntimeError(msg)\n    resolved = _resolver_for_args(args).get(option)\n    _emit_ranked_diagnostics(option, resolved)\n    sandbox = getattr(args, \"sandbox\", None)\n    remote_sandbox = bool(sandbox) and sandbox != \"none\"\n    deciding_rank = next(\n        (rank for rank in resolved.ranks if rank in {MANAGED_RANK, CLI_RANK}), None\n    )\n    if deciding_rank is not None:\n        enabled = bool(resolved.value)\n        if enabled and remote_sandbox:\n            if not strict:\n                # Same explanation, no abort: a listing that silently drops the\n                # interpreter reads as \"policy disabled it\", which is the one\n                # conclusion a user debugging a missing tool must not draw.\n                conflict = _interpreter_sandbox_conflict(sandbox, deciding_rank)\n                sys.stderr.write(f\"Warning: {conflict}\\n\")\n                return False\n            _exit_interpreter_conflicts_with_sandbox(sandbox, deciding_rank)","sourceCodeStart":1176,"sourceCodeEnd":1212,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/code/deepagents_code/main.py#L1176-L1212","documentation":"`_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.","triggerScenarios":"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).","commonSituations":"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`.","solutions":["Reinstall the package so the bundled manifest contains `interpreter.enable_interpreter`","Regenerate the manifest in a development checkout so the interpreter option is registered","Check for code/tests stubbing `get_option` and restore the entry"],"exampleFix":"// before\noptions = [o for o in manifest if o[\"name\"] != \"interpreter.enable_interpreter\"]\n// after\noptions.append({\"name\": \"interpreter.enable_interpreter\", \"type\": \"bool\", \"default\": False})","handlingStrategy":"validation","validationCode":"from deepagents_code.config_manifest import get_option\n\nif get_option(\"interpreter.enable_interpreter\") is None:\n    raise SystemExit(\n        \"manifest missing interpreter.enable_interpreter; reinstall package\"\n    )","typeGuard":null,"tryCatchPattern":"try:\n    enabled = _resolve_interpreter_enabled(args)\nexcept RuntimeError as exc:\n    logger.error(\"cannot resolve interpreter policy: %s\", exc)\n    enabled = False  # safe default: interpreter off","preventionTips":["Reinstall cleanly after upgrades rather than copying site-packages around","Keep manifest generation in sync with option schema changes in development","Never stub get_option in tests without registering all consumed keys"],"tags":["configuration","manifest","interpreter"],"backgroundTag":"missing-config-manifest-option","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}