この記事で切り分けられること
Playwright でブラウザ(特に普段使っている本人の Chrome の既定プロファイル)を開いてログイン状態を使おうとしたとき、起動が止まってタイムアウトする場合の原因切り分けと、そのときに取れる正規の道をまとめる。
症状
Playwright から本人の Chrome(既定プロファイル)を操作しようとすると、180秒でタイムアウトする。ログには次のメッセージが出ていた。
DevTools remote debugging requires a non-default data directoryこの状態ではログインセッションを引き継いだ操作は一切進まず、起動処理の時点で止まる。
原因
Chrome は既定のプロファイル(ユーザーが日常使っているプロファイル)に対して、外部のツールがリモートデバッグ経由で操作することを拒否する。これはバグではなく、既定プロファイルを外部制御から守るための仕様。検証した環境では Chrome 155 でこの挙動になっていた。
つまり --user-data-dir に既定のディレクトリをそのまま指定した状態で Playwright からデバッグ接続しようとすると、常にこのメッセージで止まる。
直し方
まず試して駄目だった方法を書いておく。既定プロファイルのデータディレクトリを別の場所にコピーして、そのコピーを Playwright から開けばログイン状態を保ったまま操作できるのではないか、と考えた。
# 試みたが止められた操作(実行していない)
cp -r <既定プロファイルのディレクトリ> <コピー先ディレクトリ>この操作は権限分類器によって Credential Materialization として止められた。ログイン情報を含むプロファイルを複製する行為は認証情報を複製する操作として扱われ、実行できない。回避策を探すことはしていない。
残っている正規の道は Claude の Chrome 拡張を使う方法。ただしこの拡張を使うには、claude.ai にログインしているアカウントと Claude Code を使っているアカウントが同じである必要がある。Google のメールアドレスが同じでも、Claude 側のアカウントが別であれば拡張は繋がらない。今回のセッションは Apple でのサインインだったため、このアカウント一致の条件を満たすかどうかをまず確認する必要がある。
# 確認すること
# 1. claude.ai にログインしているアカウントのサインイン方法
# 2. Claude Code 側のアカウントのサインイン方法
# 両者が同じ Claude アカウントであることを確認するこの条件が揃っていない場合、拡張経由での操作も繋がらないため、ブラウザ操作そのものを前提にしないやり方に切り替える。
それでも駄目なときに次に見る場所
- claude.ai と Claude Code のサインイン方法が一致しているかを再確認する(同じメールアドレスでも別アカウントになっている場合がある)。
- そもそもブラウザ操作が必須の作業かどうかを見直す。公開系の操作(Zenn・GitHub・Supabase・note など)は API か git で完結できることが多い。
- 本人の画面でしか見えない情報(Zenn のデプロイ履歴、YouTube Studio、X の設定など)が必要な場合は、その部分だけ本人から1行もらう形に段取りを変える。
再発防止
ブラウザ操作を前提にした段取りを最初から組まない。公開側の操作は API か git で足りる範囲がほとんどで、ブラウザが必要になるのは本人の画面でしか確認できない情報に限られる。その部分だけ切り出して本人から受け取る形にしておけば、Chrome の既定プロファイル制限や認証情報の複製制限に引っかかる場面自体を避けられる。

note自動投稿で記号が残る問題を正規表現の処理順序から直す方法
noteの投稿自動化はどこまでやっていいか、公開前の確認で線を引く考え方
非エンジニアがPlaywrightの定時実行を止めずに動かす方法