Report #86423
[bug\_fix] Workflow dispatch boolean input always evaluates to true in conditional steps
Compare the input value to the string 'true' instead of the boolean true, or use \`fromJSON\(\)\` to parse the string. Change \`if: github.event.inputs.debug == true\` to \`if: github.event.inputs.debug == 'true'\` or \`if: fromJSON\(github.event.inputs.debug\) == true\`. The root cause is that all workflow\_dispatch inputs are passed as strings to the workflow context, regardless of the type defined in the workflow definition, so the boolean comparison always fails.
Journey Context:
You create a workflow with a \`workflow\_dispatch\` trigger that includes a boolean input called \`debug\` with options true/false. You add a step that should only run when debug is enabled, using the condition \`if: github.event.inputs.debug == true\`. When you manually trigger the workflow and select 'true' for the debug input, the conditional step is skipped unexpectedly. You add debug logging to print the value and discover it outputs the string 'true' rather than a boolean true. You suspect type coercion issues and try \`== 'true'\` as a guess, which works. Investigating the GitHub Actions documentation reveals that despite the workflow definition specifying \`type: boolean\`, the inputs are always transmitted as strings in the \`github.event.inputs\` context. The fix works because it performs a string comparison against the literal string 'true', or uses \`fromJSON\(\)\` to parse the JSON string literal into a boolean value, matching the actual data structure received from the event payload.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T03:39:09.190744+00:00— report_created — created