0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codespaces GITHUB_TOKEN権限エラー対処

0
Posted at

GitHub Codespaces (Blank) でリポジトリ未作成のままGit管理を始める手順と、GITHUB_TOKEN権限エラーの対処法

概要

AIツール(Claude等)で生成したコードを、GitHubリポジトリがまだ無い状態からGitHub Codespacesに持ち込んでGit管理下に置くまでの手順をまとめる。

途中、Codespaces環境特有のGITHUB_TOKEN権限エラーで2箇所詰まったので、その原因と対処法を中心に記載する。

前提

  • GitHubアカウントを持っている
  • gh(GitHub CLI)が使える環境(Codespacesにはデフォルトで入っている)
  • リポジトリはまだ存在しない

1. Blank Codespaceを作成する

GitHub CodespacesはリポジトリなしでもBlank状態で起動できる。

  1. https://github.com/codespacesを開く
  2. 「New codespace」をクリック
  3. リポジトリ選択でBlankを選択

これでどのリポジトリにも紐づかない開発環境が起動する。

Codespaceは既定で30分操作がないと自動停止し、停止後は既定30日間再開しないと自動削除される(アイドルタイムアウト・Retention periodともに個人設定で変更可能)。作業を始めたら早めにリポジトリへ紐付けておくと安心。

2. ファイルを配置する

エクスプローラーパネルへファイルやzipをドラッグ&ドロップでアップロードし、必要であれば展開する。

unzip project.zip -d .
rm project.zip

.gitignoreを用意し、.env(APIキー等の秘匿情報)、node_modules、ローカルDBファイル等がコミット対象に含まれないようにしておく。

3. Gitリポジトリを初期化してコミット

git init
git add .
git status  # .env や node_modules 等が含まれていないか確認

git commit -m "Initial commit"

4. GitHubリポジトリを作成してpush

gh repo create <repo-name> --private --source=. --remote=origin
git push -u origin main

ここで2種類のエラーに遭遇した。


トラブルシューティング

エラー1: リポジトリ作成時の権限エラー

GraphQL: does not have the correct permissions to execute `CreateRepository` (createRepository)

原因

Codespacesは起動時にGITHUB_TOKENという環境変数へ、そのCodespaceのリポジトリ操作用に発行された制限付きトークンを自動的にセットする。このトークンにはリポジトリ新規作成の権限が含まれていないため、gh repo createが失敗する。

対処

環境変数をクリアしてから、ghを個人アカウントの認証情報で再ログインする。

unset GITHUB_TOKEN
gh auth login

gh auth loginのプロンプトでは以下を選択する。

  • GitHub.com
  • HTTPS
  • Login with a web browser

これでブラウザ側の認証フローに切り替わり、個人アカウントの通常の権限でghが動作するようになる。

gh auth refresh -h github.com -s repoでスコープを追加する方法もあるが、GITHUB_TOKENが環境変数に残っている間はそちらが優先されるため、上記のunsetを先に行う必要がある。

エラー2: push時の403エラー

remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/<user>/<repo>.git/': The requested URL returned error: 403

原因

gh auth loginでCLI側の認証情報を切り替えても、gitコマンドが実際に使用するcredential helperの設定は自動では更新されない。そのためgit pushは依然として古い(権限不足の)認証情報を参照し続ける。

対処

unset GITHUB_TOKEN
gh auth setup-git
git push -u origin main

gh auth setup-gitが、gitのcredential helperを現在ログイン中のghアカウントに紐付け直す。これによりpushが個人アカウントの権限で実行されるようになる。

確認コマンド

認証状態がおかしい場合は以下で確認できる。

gh auth status

想定と異なるアカウントやスコープになっていれば、gh auth logout → gh auth loginからやり直す。

なお、組織(Organization)アカウント配下でメンバーによるリポジトリ作成を禁止するポリシーが設定されている場合、上記の対処では解決しない。個人アカウント配下で作成するか、Organizationの管理者に権限付与を依頼する必要がある。


運用ルール: 仕様の正本(Source of Truth)をどこに置くか

チャットで設計・Codespaces内Claude Codeで実装、という分業をする場合、「今どの仕様が正しいか」の置き場所を決めておかないと、判断がチャット履歴に散らばって参照できなくなる。

以下のルールで運用している。

  • リポジトリ内にdocs/SPEC.mdを置き、これを仕様の正本とする
  • 仕様変更の判断はチャット(設計側)で行い、決定したらdocs/SPEC.mdに反映する
  • Codespaces側のClaude Codeはdocs/SPEC.mdに従って実装する。他のドキュメント(README、タスク一覧等)がSPEC.mdと食い違っている場合は、Codespaces側でSPEC.mdに合わせて機械的に修正してよい
  • ただし、SPEC.mdの内容自体を変更する判断はCodespaces側で行わない。実装中に仕様の解釈に迷うケースが出た場合は、チャット側に持ち帰って判断する

この境界はCLAUDE.mdに明文化しておくと、Claude Codeが自発的に守るようになる。

詳細な仕様は`docs/SPEC.md`にまとめてある。ここが正。
コードを変更する前に、関連する仕様が`docs/SPEC.md`と食い違っていないか確認すること。

補足: タスク管理はファイルではなくGitHub Issuesに寄せる

同様の理由で、開発タスクも自作のdocs/ISSUES.mdのようなファイルで管理するより、GitHub Issues(Label・Milestone)に寄せる方が運用コストが低い。理由は以下。

  • Markdownファイルは更新を手動で行う必要があり、実装との食い違いが放置されやすい
  • GitHub Issuesはクローズ管理・検索・Milestoneでの進捗管理が標準で使える
  • gh CLIで一括登録できるため、既存のMarkdownからの移行コストも低い

移行時はgh label create・gh api repos/:owner/:repo/milestones・gh issue createを組み合わせたスクリプトをCodespaces上で一度実行すればよい。移行後は元のMarkdownファイルをgit rmし、README.md・CLAUDE.mdの参照もGitHub Issuesへのリンクに更新する。


まとめ:詰まらない最短手順

エラーの原因はどちらもGITHUB_TOKEN環境変数によるものなので、最初に認証まわりを片付けてしまうのが早い。

git init
git add .
git status

git commit -m "Initial commit"

unset GITHUB_TOKEN
gh auth login
gh auth setup-git

gh repo create <repo-name> --private --source=. --remote=origin
git push -u origin main

Codespaces特有の自動認証(GITHUB_TOKEN)は、そのCodespaceで既存リポジトリを操作する分には便利だが、新規リポジトリの作成やpushには権限が不足するという点を覚えておくとよい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?