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制限を受けない。
https://github.com/{org}/{repo}/new/masterでファイルを作成- パスに
.github/workflows/scheduled-deploy.ymlと入力 - 内容を貼り付けて「Commit changes」
「ブラウザから直接やれば良かっただけじゃん」とリナ社長。
「そうなんですよ。gitのcredential経由でpushしようとしたのが間違いでした」
教訓
.github/workflows/ を変更するときは最初からGitHub Web UIを使う。PATの再発行やWindows資格情報マネージャーの更新で解決しようとしても、OAuth Appが使われている限り無駄になる。
エラーメッセージに「OAuth App」と書いてある時点で、credential側を直す方向ではなくWeb UIに切り替えるのが正解。
コメント