自動修正
概要
自動修正機能は、セキュリティ診断で検出された脆弱性に対して、Takumi が自動的に修正のためのパッチを生成し、Pull Request を作成する機能です。
Shisho Cloud byGMO の Web 画面から利用できます。
前提条件
自動修正機能を利用するには、修正したいコードが含まれるリポジトリに対するアクセス権限を持つ Write 用の GitHub App を連携させる必要があります。詳細は GitHub 連携 を参照してください。
本機能のリリースに伴い、GitHub App の「Contents」権限が Read から Read and Write に変更されました。すでに GitHub App をインストール済みの組織については、GitHub から権限更新のリクエストがメールで送信されます。自動修正機能を利用する際には、事前にこのリクエストを承認してください。
使い方
自動修正機能では、修正対象の脆弱性ごとに「修正タスク」を作成し、そのタスクを単位として自動修正を実施します。
1. タスクの作成
タスクの作成方法は次の 2 通りです。
1-A: 診断結果から作成する(推奨)
診断結果ページで「脆弱性を修正」ボタンを押し、表示されるメニューにおいて修正したい脆弱性を選択し、「タスク作成に進む」ボタンをクリックします。
過去に実施した診断結果については、「脆弱性を修正」ボタンが利用できない場合があります。その場合は、「1-B: 自動修正タブから直接 作成する」の方法をお試しください。

その後、表示されるタスク作成画面で、以下の情報を入力・確認します。
- タスク名:脆弱性のタイトルが自動入力される
- 出力言語:レポートの出力言語(日本語/英語)を選択する
- リポジトリ:修正対象のコードが含まれる GitHub リポジトリを選択する
- ブランチ:修正のベースとなるブランチを指定する
- 修正対象の脆弱性:脆弱性のレポートが自動入力される

1-B: 自動修正タブから直接作成する
「診断」ページ内の「自動修正」タブを開き、「タスクを作成」ボタンをクリックします。表示されるダイアログで、以下の情報を入力します。
- タスク名:識別しやすい名前を入力する
- 出力言語:レポートの出力言語(日本語/英語)を選択する
- リポジトリ:修正対象の GitHub リポジトリを選択する
- ブランチ:修正のベースとなるブランチを指定する
- 修正対象 の脆弱性:修正対象の脆弱性の詳細を、診断レポートからコピーして入力する
2. 自動修正の実行
タスク作成後、タスク一覧のメニューから「自動修正を実行」を選択すると、当該タスクが「実行中」の状態に移行します。
タスクが実行されている間、Takumi は以下の処理を自動的に行います。
- リポジトリのクローン
- 脆弱性の分析
- 修正コードの作成
- 修正内容の正当性を保証するためのユニットテストの作成
- 修正内容に関するレポートの作成
処理には数分から数十分程度かかる場合があります。
3. 結果の確認
処理が完了するとタスクのステータスが「レビュー中」に変わります。タスク一覧でタスク名をクリックすると、詳細ダイアログが開きます。

詳細ダイアログでは、以下の内容を確認できます。
- 「修正案」:生成された修正内容を確認できる
- レポート:脆弱性の分析結果と修正内容の説明
- 差分:生成された修正コードの差分
- 「修正対象の脆弱性」:入力した脆弱性情報を確認できる
修正を複数回実行した場合、バージョンごとに修正案が保存されます。左側のバージョン一覧から任意のバージョンを選択して確認できます。
4. Pull Request の作成
修正内容を確認し、問題がなければ「このバージョンで Pull Request を作成」ボタンをクリックします。選択中のバージョンの修正内容で、GitHub リポジトリに Pull Request が自動的に作成されます。
PR 作成後、タスクのステータスは「完了」に変わり、一覧からも PR へのリンクが表示されます。
5. 再実行・クローズ・削除
タスクのメニューから、以下の操作を行えます。
- 再実行:「自動修正を再実行」を 選択し、「追加の指示」を入力して再度修正を実行する。新しい修正案が生成され、バージョンとして追加される
- クローズ:「クローズ」を選択し、タスクを終了する。ステータスが「クローズ済み」に変わる
- 削除:「削除」を選択し、タスクを完全に削除する

タスクのステータス
| ステータス | 説明 |
|---|---|
| 保留中(Pending) | タスクが作成され、実行待ちの状態 |
| 実行中(Running) | Takumi が修正処理を実行中 |
| レビュー中(Reviewing) | 修正が完了し、ユーザーの確認待ち |
| 失敗(Failed) | 修正処理中にエラーが発生した(再実行またはクローズ可) |
| 完了(Completed) | Pull Request が作成され、タスクが完了 |
| クローズ済み(Dismissed) | ユーザーによりタスクがクローズされた |
注意事項
- 生成された修正コードは、必ず人間による確認を行ってから本番環境に適用する
- AI による修正は完璧ではない場合がある。テストの実行やコードレビューを推奨 する
- 大規模なリポジトリや複雑な脆弱性の場合、処理に時間がかかることがある
クレジット消費に関して
利用にはクレジットが必要です。クレジット消費量は、修正対象の脆弱性の複雑さやリポジトリのサイズに応じて変動します。