はじめに

GitHubでリポジトリ名を変更した後、ローカルで作業して git push しようとすると、次のようなエラーで詰まることがあります。

Missing or invalid credentials.
Error: Bad status code: 401
at ClientRequest.<anonymous> (/Applications/Cursor.app/Contents/Resources/app/extensions/git/dist/askpass-main.js:1:3335)
...
fatal: Authentication failed for 'https://github.com/user/new_project.git/'

これは、リポジトリ名の変更によりURLが変わり、Cursor(VS Code)が保持している古い認証情報や独自の認証ヘルパーが混乱していることが原因です。

今回は、「既存の他案件の設定は一切いじらない」かつ「流出リスクを抑えた期間限定のPAT(Personal Access Token)」を使って、この問題をスマートに解決する方法を解説します。


ステップ1:GitHubで「使い捨て」のPATを発行する

SSH鍵は流出が怖いが、セキュアに管理したい。そんな時は、有効期限を設定したPATが最適です。

  1. GitHubの SettingsDeveloper settingsPersonal access tokensTokens (classic) へ進みます。
  2. Generate new token (classic) を選択。
  3. Note: 「Project_X_Update」など、今回限定であることがわかる名前を付けます。
  4. Expiration (有効期限): 7 days30 days など、作業に必要な最低限の期間に設定します。(これが最強の流出対策です)
  5. Select scopes: repo(リポジトリのフル制御)だけにチェックを入れます。
  6. Generate token をクリックし、表示されたトークン(ghp_...)をメモします。

ステップ2:このリポジトリ専用のURLにトークンを埋め込む

グローバルなGit設定やMacのキーチェーンを書き換えると、他の案件で「認証が通らなくなった」というトラブルを招きかねません。

そこで、該当プロジェクトの .git/config だけをピンポイントで書き換える手法をとります。

ターミナルで対象リポジトリに移動し、以下のコマンドを実行します。

# フォーマット: git remote set-url origin https://<TOKEN>@github.com/<USER>/<REPO>.git

git remote set-url origin https://ghp_あなたのトークン@github.com/ユーザー名/新しいリポジトリ名.git

これにより、「このリポジトリとの通信時だけ、このトークンを使う」という個別設定が完了します。Cursor独自の認証プロキシが介入する余地をなくし、直接GitHubと通信させることができます。


ステップ3:接続確認

最後に、pushが通るか確認しましょう。

git push origin main

パスワードを求められることなく、スッとpushが完了するはずです。

まとめ:なぜこの方法が良いのか?

  • 他案件への影響ゼロ: 特定のリポジトリのURLを書き換えるだけなので、他のプロジェクトのGit設定には1ミリも干渉しません。
  • Cursorのバグを回避: askpass-main.js(認証プロキシ)を通さないため、エディタ起因のエラーを根絶できます。
  • 期間限定の安全性: トークンに期限を設けているため、万が一の流出時も被害を最小限に抑えられます。

同じエラーで頭を抱えている方は、ぜひ「URLに直接トークンを紐付ける」方法を試してみてください


この記事が気に入ったら『目黒で働く分析担当の作業メモ』ご支援をお願いします!

※OFUSEに飛びます


おすすめの記事