langchain-ai/deepagents · error · ValueError
interpreter_ptc list entries cannot include 'all'; use 'all'
Error message
interpreter_ptc list entries cannot include 'all'; use 'all' as a standalone value or list explicit tool names (optionally with the 'safe' preset).
What it means
When interpreter_ptc is a list, the library rejects any entry that spells 'all'. 'all' is a standalone sentinel for the whole string form only; embedding it in a list is ambiguous (list entries are otherwise literal tool names, plus the optional 'safe' preset), so it fails fast instead of guessing.
Source
Thrown at libs/code/deepagents_code/agent.py:1051
write_included,
)
return included
msg = (
f"Invalid interpreter_ptc string {ptc!r}; expected 'safe', 'all', "
"or a list of tool names."
)
raise ValueError(msg)
if isinstance(ptc, list):
from deepagents_code.config import INTERPRETER_PTC_SAFE_PRESET
if any(name.strip().lower() == "all" for name in ptc):
msg = (
"interpreter_ptc list entries cannot include 'all'; use 'all' "
"as a standalone value or list explicit tool names (optionally "
"with the 'safe' preset)."
)
raise ValueError(msg)
resolved: list[str] = []
seen: set[str] = set()
def _add(name: str) -> None:
if name not in seen:
seen.add(name)
resolved.append(name)
for name in ptc:
if name.strip().lower() == "safe":
for member in sorted(INTERPRETER_PTC_SAFE_PRESET):
_add(member)
continue
_add(name)
# Explicit names are passed through unvalidated: the middleware resolves
# them against the live runtime registry (which includes the SDKView on GitHub (pinned to a1af029e6e)
Solutions
- If you want everything, use the standalone string: interpreter_ptc="all" (plus interpreter_ptc_acknowledge_unsafe=True or auto_approve=True).
- If you want the preset plus extras, use "safe" inside the list: ["safe", "execute"].
- Otherwise list only explicit tool names and drop the 'all' entry.
Example fix
// before create_cli_agent(interpreter_ptc=["safe", "all"]) // after create_cli_agent(interpreter_ptc="all", interpreter_ptc_acknowledge_unsafe=True) // or preset + explicit extras create_cli_agent(interpreter_ptc=["safe", "execute"])
Defensive patterns
Strategy: validation
Validate before calling
if isinstance(ptc, list) and any(str(n).strip().lower() == "all" for n in ptc):
raise ValueError("use interpreter_ptc='all' as a standalone string, not inside a list") Type guard
def is_ptc_tool_list(v: object) -> TypeGuard[list[str]]:
return (
isinstance(v, list)
and all(isinstance(n, str) and n.strip().lower() != "all" for n in v)
) Try / catch
try:
agent = create_cli_agent(interpreter_ptc=ptc)
except ValueError as exc:
if "cannot include 'all'" in str(exc):
agent = create_cli_agent(interpreter_ptc="all", interpreter_ptc_acknowledge_unsafe=True)
else:
raise Prevention
- Remember: 'all' is string-form only; 'safe' is the only preset combinable inside a list.
- Validate config-driven lists at load time, before agent construction.
- Prefer ["safe", ...extras] over ["all"] when you need preset plus extras without full exposure.
When it happens
Trigger: create_cli_agent(interpreter_ptc=["all"]) or interpreter_ptc=["safe", "all"] or ["execute", "ALL"] — any list element whose strip().lower() == 'all' raises this ValueError.
Common situations: Users mixing the sentinel vocabulary, e.g. writing ["safe", "all"] intending 'everything plus the preset'; migrating a config that used the string 'all' into list form without realizing 'all' cannot be combined.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- Invalid interpreter_ptc string {ptc!r}; expected 'safe', 'al
- Invalid {SERVER_ENV_PREFIX}ALLOW_FS_TOOLS value: unknown fil
- shell_allow_list must be None or non-empty
- allow_list must not be empty; disable shell access instead
- interpreter_ptc='all' exposes every host tool to PTC calls t
AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29).
Data as JSON: /api/errors/23e2de55d02949bf.
Report an issue: GitHub.