rohitg00/ai-engineering-from-scratch · error · RuntimeError
path escapes sandbox
Error message
path escapes sandbox
What it means
Error "path escapes sandbox" thrown in rohitg00/ai-engineering-from-scratch.
Source
Thrown at phases/19-capstone-projects/01-terminal-native-coding-agent/code/main.py:110
self._hooks[event].append(fn)
def fire(self, event: str, payload: dict[str, Any]) -> dict[str, Any]:
for fn in self._hooks[event]:
payload = fn(payload) or payload
return payload
# ---------------------------------------------------------------------------
# tool surface -- six tools, each sandboxed, each returns truncated text
# ---------------------------------------------------------------------------
TRUNCATE_BYTES = 4096
def tool_read_file(sandbox: str, path: str) -> str:
full = os.path.join(sandbox, path)
if not os.path.realpath(full).startswith(os.path.realpath(sandbox)):
raise RuntimeError("path escapes sandbox")
with open(full, "r", encoding="utf-8", errors="replace") as fh:
return fh.read()[:TRUNCATE_BYTES]
def tool_run_shell(sandbox: str, cmd: str, timeout: int = 30) -> str:
proc = subprocess.run(cmd, cwd=sandbox, shell=True, capture_output=True,
text=True, timeout=timeout)
out = (proc.stdout + proc.stderr)[:TRUNCATE_BYTES]
return f"exit={proc.returncode}\n{out}"
TOOLS: dict[str, Callable[..., str]] = {
"read_file": tool_read_file,
"run_shell": tool_run_shell,
}
# ---------------------------------------------------------------------------View on GitHub (pinned to 39ea8a1c6d)
When it happens
Trigger: Thrown at phases/19-capstone-projects/01-terminal-native-coding-agent/code/main.py:110 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of rohitg00/ai-engineering-from-scratch@39ea8a1c6d (2026-08-26).
Data as JSON: /api/errors/ccb60bacc45a1078.
Report an issue: GitHub.