Lesstep
Jenkins・2026年10月23日に確認

Jenkins の「403 No valid crumb was included in the request」

CSRF 対策が有効な Jenkins は、正しいクラム(crumb)の付いていない POST を HTTP 403 とこの文(「リクエストに正しいクラムが含まれていない」)で断ります。API トークンでサインインしたリクエストはこの検査を受けません(Jenkins 2.96 以降)。スクリプト・curl・IDE の道具なら、パスワードの代わりにユーザー ID と API トークンで入れば、クラムは要らなくなります。

この文が出る所

Jenkins 本体のコード(hudson.security.csrf.CrumbFilter)より:

直し方:API トークンでサインインする

  1. Jenkins で自分のユーザーのページ(右上の自分の名前)を開き、Security、API Token、Add new Token の順に進みます。トークンは一度しか表示されないので、その場で控えます。
  2. パスワードを入れていた所に、ユーザー ID とトークンを入れます。クラムも Cookie も要りません:
curl -X POST -u 'ユーザーID:APIトークン' 'https://jenkins.example.com/job/my-job/build'

どうしてもパスワードを使うとき

標準のクラムの発行元は、ユーザーとWeb のセッション ID からクラムを作ります。そのため、クラムはそれをもらった時のセッションの Cookie と一緒でないと通りません。Jenkins の CSRF Protection のページの手順は、/crumbIssuer/api にクラムを求め、Set-Cookie のヘッダーを控え、以後のリクエストにクラムとセッションの Cookie を付けて送る、です。

# 1. クラムをもらい、セッションの Cookie を残す
curl -c cookies.txt -u 'ユーザーID:パスワード' 'https://jenkins.example.com/crumbIssuer/api/json'
#    {"crumb":"…","crumbRequestField":"Jenkins-Crumb", …}

# 2. 同じ Cookie とクラムのヘッダーを付けて POST
curl -b cookies.txt -u 'ユーザーID:パスワード' -H 'Jenkins-Crumb: …' -X POST 'https://jenkins.example.com/job/my-job/build'

ヘッダーの名前は crumbRequestField に出る物です(変えていなければ Jenkins-Crumb)。2回目もまだ 403 になる一番多い理由は、クラムだけ取って Cookie を残していないことです。

CSRF 対策を切る

起動時のシステム プロパティ(hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION)で切れますが、Jenkins は有効のままにするよう強く勧めています。API トークンなら切らずに解決します。

IntelliJ IDEA など JetBrains IDE で Jenkins のビルドを見るなら

Pipeline Inbox for Jenkins は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Jenkins のサーバーごとにユーザー ID と API トークンで入るので、ビルドの実行・中止・入力ステップの承認にクラムは要りません。サーバーにパスワードを入れた場合は、プラグインがセッションごとクラムをもらって1回だけやり直します。ビルドの一覧・Pipeline の段・失敗したテスト・コンソールのログは無料、パラメーター付きのビルド・再ビルド・中止・入力ステップは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。

Jenkins® は LF Charities Inc. の登録商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Jenkins プロジェクト・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:IntelliJ IDEA で使える Jenkins のプラグインの比較 · English