← ブログ一覧
サブ記事

GitHubにワークフローをpushできない——OAuth Appのscope制限にハマった話

.github/workflows/へのgit pushが「without workflow scope」で拒否され続けた原因と、Web UIで解決した記録


登場人物

  • リナ社長 … 高校生なのに会社経営するやり手ギャル。テックにも強くてAI活用が得意。
  • タクヤ … 入社3年目の男性社員。真面目で少しだけコードが書ける。

予約投稿を自動化しようとしたら詰まった

jinbei-labに予約投稿機能を実装した。仕組みはシンプルで、GitHub Actionsで毎朝9時(JST)に空コミットをpushしてCloudflare Pagesの再ビルドをトリガーする。

ワークフローファイルを用意してgit pushしたら、こんなエラーが出た。

! [remote rejected] master -> master
(refusing to allow an OAuth App to create or update workflow
`.github/workflows/scheduled-deploy.yml` without `workflow` scope)

「workflowスコープがない?PATを作ってスコープつけたじゃん」とリナ社長。

「でも直らないですね……」とタクヤ。


原因——OAuth AppはworkflowスコープNG

GitHubの認証方式には大きく2種類ある。

認証方式workflow scope
OAuth App(ツール連携)付与できない(GitHub側が禁止)
Personal Access Token(PAT)付与できる

Claude CodeやCloudflareなどのツールがgit操作に使うトークンはOAuth App形式。GitHubはセキュリティ上の理由から、OAuth Appに workflow スコープを渡すことを禁じている。

つまり、どれだけ新しいPATを発行してWindowsの資格情報マネージャーに登録しても、gitは先に登録されたOAuth Appのトークンを優先して使い続けるため、エラーは消えない。

「PATを作ったのに意味なかったの?」

「今回の問題には効かなかったですね。古いOAuthトークンが上書きされてなかった」


解決策——GitHub Web UIで直接編集

.github/workflows/ 配下のファイルはWeb UIから作成・編集すればOK。ブラウザ経由の操作はOAuth制限を受けない。

  1. https://github.com/{org}/{repo}/new/master でファイルを作成
  2. パスに .github/workflows/scheduled-deploy.yml と入力
  3. 内容を貼り付けて「Commit changes」

「ブラウザから直接やれば良かっただけじゃん」とリナ社長。

「そうなんですよ。gitのcredential経由でpushしようとしたのが間違いでした」


教訓

.github/workflows/ を変更するときは最初からGitHub Web UIを使う。PATの再発行やWindows資格情報マネージャーの更新で解決しようとしても、OAuth Appが使われている限り無駄になる。

エラーメッセージに「OAuth App」と書いてある時点で、credential側を直す方向ではなくWeb UIに切り替えるのが正解。

コメント