Report #13086
[tooling] Shell script needs to pass variable into jq filter safely without injection or quoting errors
Use \`jq --arg name "$value" '.foo = $name'\` to inject shell variables as JSON strings, or \`--argjson name "$num"\` for numbers/booleans, referencing them as \`$name\` in the filter
Journey Context:
Using shell interpolation like \`.foo = "$var"\` inside jq filters breaks when variables contain quotes, backslashes, or special JSON characters, leading to injection vulnerabilities or syntax errors. \`--arg\` treats the value as a literal string, safely JSON-encoding it. \`--argjson\` parses the variable as JSON \(essential for booleans or numbers, preventing them from being quoted as strings\). This is the only robust way to pass dynamic data from shell to jq without complex escaping or temporary files, and it ensures the filter syntax remains static and readable.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T17:44:28.099293+00:00— report_created — created