[{"data":1,"prerenderedAt":313},["ShallowReactive",2],{"content-/cloudflare-cf-cli-setup":3,"all-pages-for-dir":290,"related-/cloudflare-cf-cli-setup":291,"og-image-/cloudflare-cf-cli-setup":312},{"id":4,"title":5,"body":6,"category":269,"concepts":270,"description":271,"extension":272,"meta":273,"navigation":274,"ogImage":270,"path":275,"project_name":276,"published":277,"publishedAt":278,"seo":279,"source":280,"stem":281,"tags":282,"todo":270,"unpublished":277,"updatedAt":270,"__hash__":289},"pages/2026-09/2026-09-29/cloudflare-cf-cli-setup.md","Cloudflareの新CLI「cf」を手元に入れた日：wranglerとの役割分担とOAuthデバイス認可でのログイン",{"type":7,"value":8,"toc":258},"minimark",[9,13,17,28,31,36,39,52,55,58,66,69,76,79,82,85,110,117,121,124,127,171,175,178,189,193,200,203,215,218,221,224,227,230,237,240,243,251,254],[10,11,5],"h1",{"id":12},"cloudflareの新clicfを手元に入れた日wranglerとの役割分担とoauthデバイス認可でのログイン",[14,15,16],"p",{},"10時47分、Cloudflare 公式の告知ポストを Claude Code に貼った。\n頼んだのは「これ何かちょっと調べてもらえませんかね。私の環境に取り入れてほしいんですけど」ということだった。\n続けて「取り入れてますかね。どういうメリットありますかね」とも聞いた。",[14,18,19],{},[20,21,27],"a",{"href":22,"target":23,"rel":24},"https://x.com/Cloudflare/status/2104594527797330352","_blank",[25,26],"noopener","noreferrer","→ Cloudflare 公式の告知ポスト",[14,29,30],{},"もう入っているのかどうかも、自分では把握していなかった。",[32,33,35],"h2",{"id":34},"告知の中身は新しい-clicfだった","告知の中身は新しい CLI「cf」だった",[14,37,38],{},"Claude Code にはポストだけでなくブログ本文まで読んでもらい、手元の環境と突き合わせてもらった。\n返ってきた報告の要点は3つある。",[40,41,42,46,49],"ul",{},[43,44,45],"li",{},"Cloudflare が 9/28 に出した、新しい CLI「cf」の発表だった。wrangler の後継にあたり、今はオープンベータ",[43,47,48],{},"手元にはまだ入っていない。入っているのは wrangler 4.92.0 だけで、wrangler.toml を持つリポジトリは約25ある",[43,50,51],{},"Cloudflare 公式のスキル集（cloudflare/skills）も入っていない",[14,53,54],{},"「取り入れてますかね」への答えは、CLI もスキルも未導入だった。\n一方、置き換えられる側の wrangler の設定ファイルは、約25のリポジトリに置かれている。\ncf を入れたあと wrangler をどう扱うかは、この時点ではまだ決まっていなかった。",[32,56,57],{"id":57},"スキルは丸ごとではなく2本だけ入れた",[14,59,60,61,65],{},"スキルの入れ方については、プラグインとして入れるのが一番きれいなので1点だけ決めてほしい、と Claude Code から聞かれた。\nこちらから返事を貼ると、先に cf CLI のインストールが済んだ。\n入ったのは ",[62,63,64],"code",{},"cf v1.0.0-beta.5"," である。",[14,67,68],{},"スキルのほうは、丸ごとではなく2本だけ入れる案が出てきた。\n「OK、それでいきましょうか」と返した。",[14,70,71,72,75],{},"入れたのは web-perf と workers-best-practices の2本で、",[62,73,74],{},"~/.claude/skills/"," に置いた。\n説明文は Claude Code に日本語へ書き直させ、出典のメモも付けてもらった。\nそのセッションのスキル一覧に、日本語の説明付きで2本が並んだことも確認できた。\nただし、Mac 側にはまだ届いていない。",[32,77,78],{"id":78},"ログインだけは自分の手でやった",[14,80,81],{},"cf CLI は入ったものの、ログインしないと Cloudflare は操作できない。\nログインはブラウザで行う必要があり、ここだけは Claude Code から「お願いします」と頼まれた。",[14,83,84],{},"自分がターミナルで打ったのは、この1行だけだった。",[86,87,92],"pre",{"className":88,"code":89,"language":90,"meta":91,"style":91},"language-bash shiki shiki-themes vitesse-light vitesse-light","cf auth login\n","bash","",[62,93,94],{"__ignoreMap":91},[95,96,99,103,107],"span",{"class":97,"line":98},"line",1,[95,100,102],{"class":101},"senZ8","cf",[95,104,106],{"class":105},"sdGka"," auth",[95,108,109],{"class":105}," login\n",[14,111,112,113,116],{},"出力には ",[62,114,115],{},"Starting OAuth login flow..."," に続いて、OAuth のデバイス認可（Device Authorization Grant）でログインを試みる旨が出た。\nブラウザが開き、そこで認可が通った。",[32,118,120],{"id":119},"_3つの用途のうちアクセス解析だけが取れなかった","3つの用途のうちアクセス解析だけが取れなかった",[14,122,123],{},"ログインが通ってから、Claude Code に3つの用途を順に試してもらった。\nゾーンと DNS の読み取りを確かめ、次にキャッシュ削除を dry-run（実際には消さない予行）で流し、最後にゾーンのアクセス解析まで届くかを見た。",[14,125,126],{},"結果は次のとおりだった。",[128,129,130,143],"table",{},[131,132,133],"thead",{},[134,135,136,140],"tr",{},[137,138,139],"th",{},"用途",[137,141,142],{},"結果",[144,145,146,155,163],"tbody",{},[134,147,148,152],{},[149,150,151],"td",{},"ゾーンと DNS の取得",[149,153,154],{},"取得できた",[134,156,157,160],{},[149,158,159],{},"キャッシュ削除",[149,161,162],{},"dry-run で準備までは確認できた",[134,164,165,168],{},[149,166,167],{},"アクセス解析",[149,169,170],{},"cf では取れなかった",[32,172,174],{"id":173},"認可コードを貼ったらもう要らなかった","認可コードを貼ったら、もう要らなかった",[14,176,177],{},"ひとつ、自分の手順が空振りした場面がある。\nログインが済んだあとで、デバイス認可のコードをチャットにそのまま貼った。",[14,179,180,181,184,185,188],{},"Claude Code の返事は「そのコードはもう入力しなくて大丈夫です」だった。\n",[62,182,183],{},"cf auth login"," でブラウザが開いたときにコードは受け付けられていて、ログインは完了していた。\n念のため ",[62,186,187],{},"cf auth whoami"," の結果を見てもらうと、「ログイン済み、トークン有効」と出た。",[32,190,192],{"id":191},"wrangler-はデプロイcf-は-dns-とキャッシュ削除","wrangler はデプロイ、cf は DNS とキャッシュ削除",[14,194,195,196,199],{},"確認が済んだところで、Claude Code に cf の手順書を書かせた。\n置き場所は ",[62,197,198],{},"~/.claude/references/cloudflare-cf-cli.md"," で、あわせて CLAUDE.md からの導線も足してもらった。",[14,201,202],{},"グローバルの CLAUDE.md には、状況別に読むリファレンスの表がある。\nその表の cf の行には、次の分担が書いてある。",[40,204,205,208],{},[43,206,207],{},"Cloudflare のキャッシュ削除、DNS、ゾーン設定を触るときは cf CLI を使う",[43,209,210,211,214],{},"デプロイは wrangler と ",[62,212,213],{},"/deploy"," コマンドのまま",[14,216,217],{},"後継と紹介された CLI を入れても、デプロイの経路は動かしていない。\n約25のリポジトリの wrangler.toml はそのままで、cf が引き受けるのは、キャッシュ削除や DNS のようなゾーンまわりの作業である。",[32,219,220],{"id":220},"プッシュが古いマージ衝突で止まった",[14,222,223],{},"最後に「じゃあコミットプッシュしておきましょうか」と頼んだ。\n今回入れた背景を公開記事にすることも口にしかけたが、それは明日やるからと取り下げた。",[14,225,226],{},"プッシュは一度止まった。\nClaude Code の報告によると、自動同期に古いマージ衝突が残っていた。\nその朝に出ていたバックアップ遅延の警告も、これが原因だった。",[14,228,229],{},"衝突を解く前に、Mac 側で何が変わったかを Claude Code に確かめてもらった。\nマージを通すと、キャッシュしていたスキル群がディスクから消えた。\nこれは想定どおりの動きで、スキル群はいまは git の管理外になっている。\n消えた分はバックアップから戻してもらい、428件中428件の復元を確認した。",[14,231,232,233,236],{},"そのうえで Cloudflare まわりの変更をコミットしてもらった。\n",[62,234,235],{},"~/.claude","（dotclaude リポジトリ）へのコミットは2件で、プッシュまで済み、origin との差はゼロになった。\n朝から警告が出ていたバックアップ同期の詰まりも、この途中で解消した。",[32,238,239],{"id":239},"振り返り",[14,241,242],{},"冒頭の「取り入れてますかね」への答えは、未導入だった。\n入れ終えたあとに手元に残ったのは、作業ごとにどちらの CLI を使うかという分担である。",[40,244,245,248],{},[43,246,247],{},"後継と紹介された CLI でも、入れた日にデプロイの経路までは移さなかった。用途を3つ試し、通った DNS とキャッシュ削除を cf に任せ、デプロイは wrangler に残した",[43,249,250],{},"ブラウザでのログインは自分、用途の確認と手順書づくりは Claude Code という分担で、導入は1セッションに収まった",[14,252,253],{},"導入の背景を公開記事にまとめるのは、翌日の作業に回した。",[255,256,257],"style",{},"html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":91,"searchDepth":259,"depth":259,"links":260},2,[261,262,263,264,265,266,267,268],{"id":34,"depth":259,"text":35},{"id":57,"depth":259,"text":57},{"id":78,"depth":259,"text":78},{"id":119,"depth":259,"text":120},{"id":173,"depth":259,"text":174},{"id":191,"depth":259,"text":192},{"id":220,"depth":259,"text":220},{"id":239,"depth":259,"text":239},"dev",null,"Cloudflare公式の告知ポストをClaude Codeに調べてもらい、新しいCLI「cf」と公式スキル2本を手元の環境に取り入れた記録。ログインは自分でcf auth loginを実行し、DNSとキャッシュ削除はcf、デプロイはwranglerのままという分担を手順書に残した。","md",{},true,"/cloudflare-cf-cli-setup","claude-code-tools",false,"2026-09-29T00:00:00.000Z",{"title":5,"description":271},"make-diary","2026-09/2026-09-29/cloudflare-cf-cli-setup",[283,284,285,286,287,288],"Cloudflare","cf CLI","wrangler","Claude Code","OAuth","開発環境","CDgY5zwy9XMtlNZFpse1giJmdjAXKXvxY8toukYl9gI",[],[292,296,300,304,308],{"title":293,"path":294,"publishedAt":295},"Excel講座の画面再現動画をレビューしやすくする：カメラ固定、数式バーの可視化、確認済みステータスのCloudflare保存","/excel-scene-review-ui-tuning","2026-09-26T00:00:00.000Z",{"title":297,"path":298,"publishedAt":299},"Cloudflare Workers無料プランのcronで毎朝の統計取得は動くか：wranglerでPhase 0を実測した","/make-diary-cloudflare-workers-cron-plan","2026-09-25T00:00:00.000Z",{"title":301,"path":302,"publishedAt":303},"独自ドメインのメール送信は Cloudflare だけで完結できるか：外部 SMTP 中継と比べて現状維持に決めた記録","/email-sending-cloudflare-vs-smtp-relay","2026-09-23T00:00:00.000Z",{"title":305,"path":306,"publishedAt":307},"サブエージェント5体に138節を分担させて、自炊した教材の作業用ドラフトを仕上げた","/textbook-draft-subagent-parallel","2026-09-05T00:00:00.000Z",{"title":309,"path":310,"publishedAt":311},"止まったセッションを履歴から復元し、デプロイと dev サーバーの掃除まで通した日","/deploy-and-dev-process-cleanup","2026-09-03T00:00:00.000Z","https://log.eurekapu.com/og/blog/cloudflare-cf-cli-setup.png?v=2026-09-29T00%3A00%3A00.000Z&title=Cloudflare%E3%81%AE%E6%96%B0CLI%E3%80%8Ccf%E3%80%8D%E3%82%92%E6%89%8B%E5%85%83%E3%81%AB%E5%85%A5%E3%82%8C%E3%81%9F%E6%97%A5%EF%BC%9Awrangler%E3%81%A8%E3%81%AE%E5%BD%B9%E5%89%B2%E5%88%86%E6%8B%85%E3%81%A8OAuth%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E8%AA%8D%E5%8F%AF%E3%81%A7%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&author=Kei%20Komatsu&sig=43c9191120298100",1790910505942]