GitHub Actions:「Unexpected input(s) ..., valid inputs are [...]」
これはエラーでなく警告で、ステップはそのまま動きます(「想定外の入力。正しい入力はこれら」)。ランナーはアクションを動かす前に、with: の下の名前を、使っているバージョンのそのアクションの action.yml にある入力と比べます。一覧に無い名前があってもステップは止まりませんが、アクションにはその設定が無いので、何の効果もありません。ワークフローに書いたのと違う動きのまま、ジョブが通ることがあります。
見え方
2026年10月1日に報告された、デプロイのジョブから(openfoodfacts-server #14791・途中を省略):
Unexpected input(s) 'continue-on-error', valid inputs are ['host', 'port', 'passphrase', 'username', 'password', ...]
- 「valid inputs are」のあとの一覧が、そのバージョンのアクションが持っている入力のすべてです。
- ランナーは大文字と小文字を区別せずに比べます。なので
Python-Versionとpython-versionは一致しますが、repo-tokenとrepo_tokenは一致しません。 - 確かめるのは、リポジトリにあるアクション(
uses: ./.github/actions/xのようなローカルのものも含む)です。Docker のイメージから直接動かすアクション(uses: docker://...)にはaction.ymlが無く、確かめません。
10月に起きていたこと
astral-sh/setup-uv@v3にpython-version:v3 にはその入力が無く(v4.1.0 で入った)、Python のマトリックスのどの1本も、ランナーにもともとある Python で動き、同じバージョンを試していました(iota-hub-python #2)。aquasecurity/trivy-actionにtrivy-version:入力の名前はversionなので、新しい Trivy への固定は一度も効かず、スキャンはアクションの既定のバージョンで動いていました(pa-sso-proxy #71)。- v7 より前の
actions/upload-artifactにarchive: false:この入力は v7.0.0(2026年2月26日)からなので、アーティファクトは zip にまとめられたままでした(gas_atlas #398)。 filesを取る v5 以降のcodecov/codecov-actionにfile::指定したカバレッジのパスは捨てられ、アップロードはアクションが自分でカバレッジのファイルを探すのに頼っていました(aip-otel-exporter #170)。- v2 以降の
actions/first-interactionにrepo-token・issue-message・pr-message:v2 でrepo_token・issue_message・pr_messageに名前が変わっています。この例ではジョブも「Input required and not supplied: issue_message」で失敗していました(ellmos-voice-io #1)。
よくある理由
- その入力が、アクションの別のメジャーバージョンのものだった。あとのバージョンで入ったか、いま使っているバージョンで名前が変わったか消えた。バージョンを上げたあとによくあります。
- ステップのキーを
with:の下に書いた。continue-on-error・timeout-minutes・if・envはステップそのもののキーで、上の例のようにuses:と同じ段に書きます。 - 打ち間違い、またはアクションが下線を使うところにハイフンを書いた。
- ローカルの複合アクションが、自分の
action.ymlのinputs:にその入力を宣言していない(agentic-development-workflow #792)。そこで宣言するか、渡すのをやめます。
使っているバージョンの入力を読む
警告にもう並んでいます。動かす前に見るなら、同じタグの action.yml を読みます(action.yaml という名前のアクションもあります):
gh api "repos/astral-sh/setup-uv/contents/action.yml?ref=v3" --jq .content \ | base64 -d | sed -n '/^inputs:/,/^[a-z]/p' | grep -E '^ [A-Za-z0-9_-]+:'
そのうえで入力の名前を直すか、その入力があるバージョンに移ります。直したあとは、入った Python のバージョンや動いた Trivy のバージョンのように、結果をログで確かめます。警告が消えたことで分かるのは、名前が合ったことだけです。
動かす前に見つける
actionlint は、with: を、ローカルのアクションの action.yml と、自分で持っている人気のアクションの一覧とに照らして確かめ、input "keys" is not defined in action "actions/cache@v4" のような行を出します。v1.7.12 の一覧には actions/first-interaction・actions/upload-artifact・codecov/codecov-action は入っていますが、astral-sh/setup-uv と aquasecurity/trivy-action は入っていません。この2つは、実行の警告が唯一の確かめになります。
見分け方
- 「Input required and not supplied: ...」:エラーで、ステップは失敗します。アクションが要る入力を渡していません。名前が変わったせいのことがよくあります。
- 「Input '...' has been deprecated with message: ...」:入力はまだあって動きますが、アクションはいずれ消すつもりです。たいていメッセージに代わりが書いてあります。
- 「Invalid workflow file」と「Unexpected value」:ワークフロー自体のキーの場所が違っていて、どのジョブも始まる前にファイル全体が止まります(「Invalid workflow file」)。
実行を IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Invalid workflow file」 · 「Node.js 20 is deprecated」の警告 · setup-python の「was not found」 · 「Input required and not supplied」 · 「Unable to reserve cache」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English