【Claude Code活用事例】脆弱性の公表を集め、関係する件だけ知らせる仕組み

Claude Codeで、脆弱性の監視を、自動にする。寅次郎先生と記事の内容を表すイラスト。
動作環境(2026年10月31日に確認)
<パソコン>
機種:MacBook Air(13インチ、M3、2024)
OS:macOS 26.6.2

<ソフトウェア> Claude for Mac 4.4212.0 Node.js 22.23.4

2026年10月は、PHP、Node.js、Linuxカーネルと、重い脆弱性の公表が続きました。そのたびにニュースを開き、自分のサイトに関係があるかを調べていては、手が回りません。

そこで、Claude Codeに見回りを任せることにしました。本記事では、この使い方で仕事がどう変わったか、実際にどう動いているか、どう作ったかを順に紹介します。

スケジュール実行は、チャットとCoworkの統合版のClaudeにもある機能です。今回はClaudeデスクトップアプリのClaude Codeで、手元のサイトとスクリプトを扱いました。この記事は、その環境で確かめた例です。

項目 内容
使ったツール Claudeデスクトップアプリ(Claude Code)
使った機能 スケジュール済みタスク(Scheduled)
仕事の目的 重大な脆弱性の公表に早く気づき、自分のサイトに関係するかを判断する

仕事の変化

Claude Codeを使う前と後で、脆弱性の公表を知ってから判断するまでの手順を比べました。左が使う前、右が使った後です。

使う前と後の比較。人が担っていた公表の収集と調査をClaude Codeに任せ、人は報告を読んで更新するかを決める

使う前は、4つの手順をすべて自分でこなしていました。とくに時間がかかったのは、一次情報を読み、自分のサイトの部品と版に当てはまるかを調べるところです。

使った後は、集めるところから報告を書くところまでを、Claude Codeが毎日8時と20時に進めます。自分がするのは、届いた報告を読んで、更新するかを決めることだけです。

実際の様子

登録後の画面で、スケジュール、実行履歴、保存された報告を順に確認しました。以下は2026年11月1日の画面です。

1: 一覧で「脆弱性の公表の監視(8時・20時)」の登録と、毎日8:00・20:00の設定を確認します。

スケジュール済みタスクの一覧。脆弱性の公表の監視が有効で、毎日8時と20時の設定になっている

2: タスクの詳細画面で、「今日の8:08」の実行履歴を確認します。

タスクの詳細画面。履歴に今日の8:08、次回の実行に今日の20:07と表示されている

3: 実行結果の会話と、Markdownの報告に書かれた候補の件数を確認します。

朝の実行結果の会話と報告。新しい候補1件、取得失敗0件で、すぐ対応する件と今週中に対応する件は該当なし

【メモ】

この回は新しい候補が1件、取得の失敗は0件でした。Claude Codeは「記録のみ」と判断し、急ぐ件がなかったため通知を送っていません。

しくみの解説

この仕組みは、取得スクリプト(小さなプログラム)、Claude Code、人で分担しています。左に情報源と人、中央に実行するプログラムとAI、右に候補を保存するファイルを置きました。丸数字に沿って、情報の受け渡しを確認できます。

人とClaude Codeの依頼・報告の往復、スクリプトによる取得、候補を保存するJSONファイルpending.jsonの読み書きを示す

取得スクリプトはClaude Codeの実行指示に従い、公開されている情報源から新しい公表を集め、前回までになかった項目だけを残します。何度やっても同じ結果になるべき処理なので、AIに任せずプログラムにしました。

Claude Codeは候補の一覧を読みに行き、取得した文章から「自分のサイトに当てはまるか」を考えます。版の範囲が書かれていない勧告や、特定の設定のときだけ起きる脆弱性もあるため、ここは文章を読めるAIの出番です。

候補の一覧には、JSONファイルの pending.json を使っています。報告は reports/ 以下のMarkdownファイル(.md)にも保存しますが、図では人とClaude Codeの依頼・報告の往復にまとめました。

1回の実行で何が起きるかは、次の図で順に追えます。登場するものを上に並べ、上から下へ時間が進む図です。矢印の根元の●は動作する側、先は相手を表します。

登録した依頼で起動し、公表の取得、pending.jsonへの保存と読み取りの往復、Markdownの報告の保存、人への通知、候補の消去へ進む実行順

新しい候補が0件で取得の失敗もない回は、Claude Codeは勧告を読まず、報告も書かずに終えます。

【メモ】

脆弱性に付く世界共通の番号(CVE)を追えば最も早く知れそうですが、実際は違いました。2026年10月のNode.jsでは、予告が修正版の1週間前、CVEの記録は修正版の翌日に出ています。そのため、この仕組みでは各ソフトの公式の告知を主な情報源にしました。

しくみの作り方

仕組みは、Claude Codeと相談しながら作りました。会話記録をもとに、相談と返答の要点を整理しています。最後の時刻指定は、実際に入力した文のままです。

最初に相談したのは、脆弱性の公表を早く知り、自分のサイトに関係するかを自動で調べる方法でした。

プロンプト(相談の要旨)

CVE番号の公表を追えば、早く対応できますか。自分に関係する脆弱性を調べて、知らせる仕組みを作りたいです。

Claude Codeは、CVE番号の公表だけを追うより、各ソフトの公式の告知を先に読む設計を提案しました。攻撃に使われたかは悪用済みの一覧(KEV)、サイトで使う部品の版に当てはまるかは脆弱性のデータベース(OSV)で確かめる、という分け方です。

設計案を見てから、仕組みを実装し、その裏側も記事で紹介したいと伝えました。

プロンプト(実装の依頼の要旨)

この仕組みを実装して、どう動くか、その裏側も記事に書きたいです。

Claude Codeは、取得のスクリプト、監視するソフトの一覧、判定と報告の手順を作成しました。ファイルを1つずつ指定したわけではありません。サイトで使う部品は、既存の package-lock.json を読む設計にしています。

仕組みができたところで、実行する時刻を伝えました。

プロンプト

8時と20時で登録

Claude Codeは、毎回使う指示文とスケジュールを登録し、Macとアプリを起動しておく条件を説明しました。

翌朝の2026年11月1日には、8:00の予定に対して8:07:59に自動で起動し、8:09に処理を終えた記録を確認できています。新しい候補は1件、取得の失敗は0件で、報告は reports/2026-11-01_0808.md に保存されました。急ぐ件はなかったため、通知が届くことはまだ確かめていません。

実行されたかは、ClaudeのデスクトップアプリのCode側で「スケジュール済みタスク」を開き、対象のタスクの「履歴」で確認できます。実行履歴をクリックすると、その回の会話でコマンドの結果や報告、許可待ちの有無を読める仕組みです。候補が0件なら報告ファイルを作らないため、ファイルが増えたかだけでは実行の有無を判断できません。

【メモ】

ローカルのスケジュール済みタスクには、負荷を分散するため、予定時刻から数分の待ち時間があります。今回もログに待ち時間が記録されており、8:00ちょうどの開始ではありませんでした。次回の予定は、同じタスク画面の「次回の実行」で確認できます。

任せるときの注意

この仕組みでは、Claude Codeに任せる範囲を、読むこと、報告を書くこと、急ぐ件を知らせることまでにしています。スクリプト、Claude Code、人の受け持ちを並べました。

3者の分担。スクリプトは公表の取得と比較、Claude Codeは関係の判定と報告を担う。部品の更新、ビルド、公開は人が行う

部品の更新、ビルド、公開は、人が報告を読んでから行います。部品を更新すると、サイトの表示が変わったり、ビルドが通らなくなったりすることがあるためです。

【注意】

スケジュール済みタスクのClaude Codeは、インターネットから取ってきた文章を毎回読みます。その中の命令に従わないよう指示文に書きましたが、指示文の禁止は頼みごとで、操作そのものを止める設定ではありません。スケジュール済みタスクは登録したときの権限のモードを引き継ぎ、今回は実行のたびに許可を求めないモードで保存されました。より慎重にしたいときは、アプリのスケジュール済みタスクの編集画面でモードを変えましょう。

【メモ】

今回は手元のMacで動くローカルのスケジュール済みタスクを使いました。Macが起きていて、デスクトップアプリを開いていることが実行の条件です。クラウドで実行するタスクとは条件が違います。統合版Claudeで同じスクリプトを動かす方法は、この記事では検証していません。

この記事で触れた脆弱性は、それぞれ別の記事で解説しました。PHPの件はPHP2Shellとは?、Node.jsの件はNode.jsのBrotli脆弱性とは?、Linuxカーネルの件はLinuxカーネルのCVE-2026-98432です。

参考にした一次情報

当サイトが作成した本文はCC BY 4.0です。引用画像は対象外です。Claudeの記事の一覧へもどる