Straightedge executes generated code. The agent lane (agent-* commands, the
LLM writer/reviewer/repair loop) runs Python that a model wrote, and the figure
lane evaluates caller-supplied math expressions. Both are guarded — agent/ safety.py is an AST allowlist over the generated scene, and expr.py is a
strict allowlist over expressions — but a sandbox escape in either is a real
vulnerability, not a bug. This project therefore needs a disclosure channel more
than a typical library does.
Do not open a public issue for a security problem. Report it privately through GitHub's "Report a vulnerability" form (Security → Advisories), which opens a private advisory only maintainers can see.
Please include:
- what the flaw is and where (file and, if you have it, line),
- a minimal reproduction — for a sandbox escape, the input that escapes,
- what an attacker gains.
A demonstrated escape is far more actionable than a described one; a runnable payload gets prioritized.
- Sandbox escape in the agent lane — generated code reaching
open,exec,subprocess, the network, or the filesystem despiteagent/safety.py. - Expression-evaluation escape — a
--params/plan expression executing arbitrary code pastexpr.py's allowlist. - Injection into emitted output — a parameter reaching raw scene source or SVG unescaped.
- Manim, LaTeX, or other dependencies — report those upstream.
- Denial of service from a deliberately expensive but legitimate render.
- Anything requiring the attacker to already control the host the render runs on.
We aim to acknowledge a report within a few days and to fix a confirmed vulnerability before the advisory is made public, crediting the reporter unless they prefer otherwise.