Report #79404
[tooling] Shell variables with quotes or special characters break when interpolated into jq expressions
Use \`jq --arg name "$value"\` for string arguments or \`jq --argjson name "$value"\` for JSON literals, then reference as \`$name\` in the jq expression to avoid shell injection and escaping issues
Journey Context:
A common anti-pattern is using shell interpolation like \`jq '.foo = \\"'"$VAR"\\''\` which breaks if VAR contains quotes or newlines. This creates injection vulnerabilities and fragile scripts. The \`--arg\` flag safely binds shell variables to jq variables without interpolation, handling all escaping internally. \`--argjson\` is critical when passing non-strings \(booleans, numbers, null\) to avoid them being cast to strings. This distinction between string and JSON literal arguments is frequently misunderstood, leading to type errors.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T15:52:32.983567+00:00— report_created — created