>_
.issue.db
/highway
Dashboard
Issues
Memory
Lessons
Audit Log
New Issue
Edit Issue #972
Update issue details
Title *
Description
EARS: When a {{var}} placeholder is resolved into a tools.shell.run command, the Highway engine shall pass the value to the shell as data (quoted), never as shell syntax. EVIDENCE (found during #961, tenant test, API): task inj echo 'a;b' && echo done (result_key semi); task use_inj args echo [{{semi}}] -> sandbox ran "echo [a;b\ndone]" and failed exit 127 because 'b' and 'done]' were executed as commands (run bf038a48). Same class with {{x.stdout}}: trailing newline ends the command line (run 8a6e5df9: 'echo [sample,data,values\n]' exit 127). CAUSE: the interpreter's VariableResolver.interpolate_value substitutes before the tool runs (task.py resolves args), so engine/tools/shell_command/streaming.py _resolve_variables_for_shell (shlex.quote, Fix #374) never sees a placeholder. Sandbox limits blast radius to the throwaway container, but any unsandboxed tenant gets worker-level injection. Golden demos rely on raw substitution inside single quotes; a fix needs a migration story for them.
Priority
Low
Medium
High
Critical
Status
Open
In Progress
Closed
Won't Do
Due Date (YYYY-MM-DD)
Tags (comma separated)
Related Issues (IDs)
Enter IDs of issues related to this one. They will be linked as 'related'.
Update Issue
Cancel