Skip to content
Latchkey

GitHub Actions "Unrecognized named-value: inputs" - Context Scope

An expression references the inputs context, but this workflow never declared any inputs under workflow_call or workflow_dispatch, so the parser does not recognize the name.

What this error means

The workflow fails to compile with "Unrecognized named-value: inputs", even though the same expression works in another workflow. The file is valid YAML but the inputs context does not exist here.

Actions annotation
The workflow is not valid. .github/workflows/ci.yml (Line: 12, Col: 18):
Unrecognized named-value: 'inputs'. Located at position 1 within expression: inputs.env

Diagnose it: print the context before you change anything

Most workflow-expression bugs are not syntax errors, they are an expression reading something that is empty. GitHub resolves a missing property to an empty string instead of failing the run, so a wrong reference looks like a logic bug rather than a mistake. Dump the contexts first and you will usually see the answer immediately.

.github/workflows/ci.yml
- name: Dump contexts
  run: |
    echo '--- github ---'   ; echo '${{ toJSON(github) }}'
    echo '--- needs ---'    ; echo '${{ toJSON(needs) }}'
    echo '--- steps ---'    ; echo '${{ toJSON(steps) }}'
    echo '--- matrix ---'   ; echo '${{ toJSON(matrix) }}'
    echo '--- inputs ---'   ; echo '${{ toJSON(inputs) }}'

Check the context is allowed where you used it

Contexts are not available everywhere. The same expression can be valid in a step if and invalid in a job if, which is why an expression that works in one workflow fails when moved.

Where you wrote itContexts available there
run-namegithub, inputs, vars
concurrencygithub, inputs, vars
Top-level envgithub, secrets, inputs, vars
jobs.<id>.ifgithub, needs, vars, inputs
jobs.<id>.steps.ifgithub, needs, strategy, matrix, job, runner, env, vars, steps, inputs
jobs.<id>.outputsFull access, including secrets
Reusable workflow outputsgithub, jobs, vars, inputs

Common causes

No inputs declared for this trigger

The inputs context only exists when the workflow defines inputs under on.workflow_call or on.workflow_dispatch. Referencing inputs.x without that declaration is an unknown named-value.

Confusing inputs with github.event.inputs

For a manual run triggered by another event, payload values live under github.event.inputs, not the inputs context. The two are populated by different mechanisms.

How to fix it

Declare the inputs you reference

Add the input under the trigger that runs this workflow so the inputs context is populated.

.github/workflows/ci.yml
on:
  workflow_dispatch:
    inputs:
      env:
        type: string
        default: staging
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying to ${{ inputs.env }}"

Use the right source for the value

  1. For workflow_call and workflow_dispatch with declared inputs, use the inputs context.
  2. For values arriving in an event payload, read github.event.inputs or the relevant event field.
  3. Run actionlint, which knows which contexts are valid for each trigger.

Catch it before it reaches CI

Every failure in this cluster is statically detectable. actionlint parses workflow expressions, checks context availability against the same rules above, and validates needs references, so these bugs never need to cost you a run.

Terminal
# one-off
docker run --rm -v "$(pwd):/repo" --workdir /repo rhysd/actionlint:latest -color

# as a job, before anything expensive runs
- uses: actions/checkout@v4
- run: |
    bash <(curl -s https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
    ./actionlint -color

How to prevent it

  • Declare every input under the trigger before referencing it.
  • Prefer the inputs context over github.event.inputs for dispatch and call inputs.
  • Validate expressions with actionlint, not just generic YAML.

Frequently asked questions

What causes GitHub Actions "Unrecognized named-value: inputs"?
There are 2 common causes: no inputs declared for this trigger and confusing inputs with github.event.inputs. The inputs context only exists when the workflow defines inputs under on.workflow_call or on.workflow_dispatch.
How do I fix GitHub Actions "Unrecognized named-value: inputs"?
There are 2 fixes depending on which cause you have: declare the inputs you reference and use the right source for the value. Work through them in order, since the first is the most common.
What does GitHub Actions "Unrecognized named-value: inputs" actually mean?
The workflow fails to compile with "Unrecognized named-value: inputs", even though the same expression works in another workflow.
How do I stop GitHub Actions "Unrecognized named-value: inputs" happening again?
Declare every input under the trigger before referencing it. The prevention section lists 3 changes that keep it from recurring.

Related guides

References

Not every red build is your code. Latchkey repairs the ones that are not, on the runner. Start free → 30-day trial · No credit card