You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
--model value not quoted in claude_args assembly — benign now but fragile if charset ever widens #144
CLAUDE_ARGS="--model $MODEL" emits the model name without quoting. Currently safe because the validation regex [a-zA-Z0-9._-]+ excludes all whitespace and shell-special characters, so there's no injection path. But the assembled string is later passed as a step output and expanded unquoted in the YAML claude_args: ${{ steps.args.outputs.claude_args }} value. If the charset validation were ever relaxed (e.g., to allow / for a hypothetical model path), the unquoted $MODEL would word-split. Low risk as written, but defensive quoting (CLAUDE_ARGS="--model \"$MODEL\"") would make this immune to future charset drift.
Context
This issue was automatically created from a non-blocking concern identified
during pre-push whole-codebase review. It was flagged for tracking.
Now consistent with how allowed_tools and disallowed_tools are assembled.
For the record, this was defensive rather than a live bug: model is charset-validated before use, so the unquoted form could not actually break. The quoting guards against future charset drift.
Related: #148 claimed this same change embeds literal backslashes that reach the action untested. It does not — the \" is bash source-level escaping consumed at parse time. Verified empirically:
Activity
twistedmelonman commentedon Aug 18, 2026
Fixed in #149 (merged
4127f03). Verified onmain:Now consistent with how
allowed_toolsanddisallowed_toolsare assembled.For the record, this was defensive rather than a live bug:
modelis charset-validated before use, so the unquoted form could not actually break. The quoting guards against future charset drift.Related: #148 claimed this same change embeds literal backslashes that reach the action untested. It does not — the
\"is bash source-level escaping consumed at parse time. Verified empirically:#148 was closed on that basis.