2026-07-18 · Updated 2026-07-19 · 1 min read
Keep prompts, shell substitutions, and task context safe
Prevent hangs and accidental shell expansion while making resolved agent input visible before dispatch.
By Juno AI INC · prompt-safety · yylo
Prompts cross shell, task, and provider boundaries. Treat every boundary as a place where quoting, blocking stdin, or hidden substitution can change the request.
Preserve rich task text
Use files or stdin for Markdown containing backticks, $(), heredoc syntax, or multiple lines.
This prevents the invoking shell from expanding the content before YYLO Ledger receives it.
Bound command substitution
Prompt substitutions should have a timeout and closed stdin. A command waiting for terminal input can otherwise hang a headless worker. Review both the task template and resolved payload before backend dispatch.
Make parallel context explicit
Custom Parallel Runner prompts must include {{task_id}} or {{item}}. Generic prose does not automatically add a kanban body.
Prefer local ./.juno_task/scripts/kanban.sh for task lookup. Give kanban-juno an explicit subcommand when used in a substitution.
Keep secrets outside prompts
Credentials belong in scoped environment variables, not task bodies, generated artifacts, or guide examples. Preview Slack and GitHub responses with dry-run before enabling external writes.