TL;DR
コーディングエージェント向けのSlackボットとは、1つのAIエージェントに紐づけられたSlackアプリです。ダイレクトメッセージやメンションがそのままエージェントとの会話になり、返信はすべて同じスレッドに届きます。Sharklyでは各ボットはちょうど1つのAgentに紐づき、そのAgentは設定した指示、モデル、スキル、リポジトリを使って回答します。
- api.slack.com/appsを開いてApp Configuration Tokenを生成し、そのRefresh Tokenをコピーします。
- SharklyでIntegrationsを開き、Slackを選択してConnect Agentを選びます。
- 紐づけるAgentを選び、必要に応じてアプリ名を入力します(Slackのアプリ名は35文字まで)。
- Refresh Tokenを貼り付けて、Create & Installを選択します。
- Slackが開くウィンドウでOAuthの承認プロンプトを承認します。
- ボットのステータスがInstallingからConnectedに変わるまで待ち、ダイレクトメッセージを送ります。
コーディングエージェントがSlackで回答すべき理由
あなたのチームはすでにコーディングエージェントを動かしています。ある人はターミナルでClaude Codeを開き、別の人はCodexの実行をスクリプト化し、その出力は各自のシェル履歴に残っています。一方で、そうしたエージェントが答えられるはずの質問はSlackで投げかけられます。チームの会話の場がSlackだからです。
このギャップにはコストが伴います。プロダクトマネージャーが「エクスポートのエンドポイントが失敗し始めた理由は?」と尋ねると、その質問は開発者に渡り、開発者がエージェントに聞いて回答を伝え返します。エージェントが90秒で答えた質問に、中継のせいで1時間かかるのです。
Sharklyはプラットフォーム側からこのギャップを埋めます。SharklyはClaude CodeやCodexなどの実行ツールを置き換えるものではなく、それらの周囲にタスク、コンテキスト、コントロール、レビューを共有するレイヤーを追加します。そのSlackインテグレーションはこのレイヤーをワークスペースに拡張し、チームメイトは質問した場所でそのまま回答を得られます。
2つの接続、2つの役割
このインテグレーションには2つの独立した接続タイプがあり、これを混同することが最もよくある混乱の原因です。
| 接続 | できること | 設定する人 |
|---|---|---|
| Slackワークスペース接続 | Sharklyの共有Slackアプリをインストールし、SlackからTaskを作成したり、Taskのリンクバックを投稿したり、SharklyのTaskリンクをプレビューできるようにします | 組織のオーナーと管理者 |
| Agentボットの紐づけ | 1つのSharkly Agent専用のSlackアプリを作成・インストールし、メッセージがAgentとの会話になるようにします | メンバー(自分が使用できるAgentが対象) |
これらは別々のSlackアプリに支えられた別個のインストールであり、どちらか一方だけでも機能します。さらに2つの境界があります。1つのSlackワークスペースが同時に接続できるSharkly組織は1つだけです。また、Space automations内のSlackアクションは3つ目の接続を使い、そこではSlackはアクションとして機能しますが、今回のリリースではワークフローを開始できません。このガイドではAgentボットの紐づけについて説明します。
Sharkly AgentのSlackボットとは?
Agentボットは、1つのSharkly Agentを1つのSlackアプリに接続します。メッセージはAgentとの会話になり、返信は同じDMまたはスレッドに戻ります。回答するAgentは、Sharklyの他の場所とまったく同じ設定済みのチームメイトです。指示、モデル、スキル、リポジトリの知識は同じです。
紐づけは厳密に1対1で、自分のPersonal Agentに加えて、使用を許可されているSpace共有のAgentも紐づけられます。
インストールすると2つの接点が使えます。ダイレクトメッセージではそのDMチャンネルのチャットセッションが作成され、以降のメッセージでそのセッションが継続されるため、Agentは毎回ゼロからではなくコンテキストを保持します。チャンネルでのメンションでは、メンション部分を取り除いた内容がAgentに送られ、あなたのメッセージを起点とするスレッドに返信します。
@ReleaseShark summarize the decision in this thread and list the next steps
Sharklyは他のボットからのメッセージ、メッセージ編集イベント、参加イベントを無視するため、複数のアプリが同じチャンネルを共有しても返信ループが発生しません。
AIエージェントをSlackに接続する方法
設定可能なAgent(はじめかたガイドを参照)と、Slack App Configuration Tokenを生成して対象チームにアプリをインストールする権限が必要です。

- api.slack.com/appsを開き、「Your App Configuration Tokens」を見つけます。
- App Configuration Tokenを生成し、そのRefresh Tokenをコピーします(Slackのドキュメント)。これはシークレットとして扱い、Sharklyの接続フォームを通してのみ送信してください。
- SharklyでIntegrationsを開き、Slackを選択します。
- Connect Agentを選択し、紐づけるAgentを選びます。
- 任意でアプリ名を入力します。空欄の場合はAgentの名前が使われます。
- Refresh Tokenを貼り付けて、Create & Installを選択します。
- 開いたウィンドウでSlackのOAuth認証を完了します。何も表示されない場合は、ポップアップを許可して再試行してください。
- ボットのステータスがInstallingからConnectedに変わるまで待ちます。
Sharklyはリフレッシュトークンを短命の構成用アクセストークンと交換し、ボットのID、Slack Assistantビュー、OAuthリダイレクト、Events APIのコールバックとスコープを含むマニフェストからアプリを作成してから、Slackを開いてインストールします。
確認するには、ボットにDMを送ります。返信が来れば、イベントの受信、セッションの作成、実行の完了、応答の配信という一連の流れがすべて動いていると確認できます。ボットがInstallingのままの場合、OAuthコールバックがまだボットトークンを保存していないので、インストールウィンドウを開き直してプロンプトを完了してください。Agentが選択できない場合は、すでに別のアプリに紐づけられています。
Slackボットのトリガー:メンション、絵文字リアクション、すべてのメッセージ
デフォルトでは、ボットはダイレクトメッセージとチャンネルでのメンションにのみ反応します。AgentのSlack設定では、各トリガーがオン/オフを切り替えられる行になっています。
- チャンネルでメンションされたときがデフォルトです。誰かがボットに言及したときだけAgentが実行され、返信はメンションの下のスレッドに届きます。
- チャンネルでの絵文字リアクションは、リアクションをトリガーに変えます。設定した絵文字でリアクションすると、ボットが周辺のコンテキストを伴うスレッドを開きます。
- すべてのチャンネルメッセージは、明示的に指定したチャンネル内の通常のメッセージに対してAgentを実行します。すべてのチャンネルには適用できず、そこに投稿する他のアプリもトリガーになり得ます。
これを健全に保つ判断の基準は2つです。共有チャンネルではメンションのみにしておきます。広範なトリガーはノイズを生み、無関係なコンテキストをAgentに晒すからです。Any channel messageをオンにするのは、全員がメッセージをAgentに届くことを期待している専用チャンネルだけにしましょう。絵文字トリガーはその中間に位置します。誰かが意図的にリアクションしない限り、Agentには何も届かないからです。
各チャンネルスレッドはそれぞれ独立したAgentの会話です。つまり1つのチャンネル内の2つのスレッドは、別々のコンテキストを持つ2つのセッションであり、ボットに再びメンションしなくてもスレッドを続けられます。このアプリはSlack Assistantも有効にします。これはSlackがAIアプリ向けに提供するペインです。
Slackの会話はTaskではない
Agentボットの会話は、それ自体でTaskを作成することはありません。この境界は意図的なものです。チャットとタスク割り当てのルールはそのまま当てはまります。答えが欲しいときはチャット、誰かがレビューする成果物が欲しいときはTaskを割り当てます。
AgentがSlackからTaskを作成するとき、同時に現在のスレッドを紐づけることができます。紐づけた後は、タスクのコメントとスレッドのメッセージが同期し続けます。スレッドの紐づけこそがこのインテグレーションの真価です。議論はSlackで始まり、Taskになり、それ以降は進捗、ブロッカー、結果がTaskに戻りつつ、会話に参加していた人たちにとってスレッドは最新の状態に保たれます。
Slackボットが適さないケース
Taskの作成とリンクプレビューだけが欲しい。ワークスペース接続のみを使います。スラッシュコマンド、ショートカット、リンクバック、リンク展開はすべて共有アプリから提供されます。
スケジュールまたはイベント駆動のチャンネルメッセージが欲しい。それは自動化ワークフロー内のSlackアクションであり、会話ではありません。今回のリリースではSlackイベントはワークフローを開始できないため、スケジュール、ステータス変更、コメントのキーワード、Webhookを起点にしてください。
リポジトリに対する実行と最後にレビューが必要な作業。Taskを割り当てます。質問にはボットを、構築にはTaskを使います。
1つのボットでチーム全員を代表させたい。そのような紐づけは存在しません。実際の作業で連携する複数の専門エージェントは、ボットだらけのチャンネルではなく、Taskに取り組むCrewに属するべきです。
セキュリティと権限
- App Configuration Refresh Tokenはセットアップ中に交換され、インストールされたボットトークンとして使われることはありません。生成されたクライアントシークレット、署名シークレット、OAuthボットトークンは保存時に暗号化されます。
- Events APIのコールバックは保存された署名シークレットで検証されます。無効な署名は拒否され、イベント本文にはサイズ制限があります。
- 承認する前に、リクエストされるスコープを確認してください。メンション、ダイレクトメッセージ、チャンネルおよびプライベートチャンネルのスレッド履歴、メッセージ送信、DMの開始、Assistantステータスの更新です。
- オーナーと管理者は共有ワークスペースとすべての紐づけを管理し、メンバーは自分が使用できるAgentの紐づけを管理します。
切断は破壊的な操作ではありません。Agentはそのボット経由でメッセージを受け取らなくなりますが、Slackの履歴はそのまま残り、過去のメッセージがTaskになることもありません。
まとめ
コーディングエージェント向けのSlackボットは、仕事の置き場所を変えずに会話の場所だけを変えるときに、その価値を発揮します。すでに信頼しているAgentを1つ紐づけ、チャンネルがそれ以上を求めるまではメンションのみのデフォルトを維持し、チャットが仕事に変わった瞬間にスレッドの紐づけを使いましょう。まだAgentがない場合は、まず作成してください。
よくある質問
Agentボットを紐づける前にSlackワークスペースへ接続する必要はありますか?
いいえ。2つの接続タイプは独立しています。ワークスペース接続が必要になるのは、SlackからのTask作成、リンクバック、リンクプレビュー、Inbox通知のDMだけです。
1つのSlackボットで複数のSharkly Agentを扱えますか?
いいえ。各ボットはちょうど1つのAgentに紐づき、1つのAgentが同時に持てる紐づけは1つだけです。複数のAgentをSlackで使うには、それぞれに別のボットを作成してください。
ボットとのチャットでTaskは自動的に作成されますか?
いいえ。会話が、担当者、ステータス、レビューを必要とする作業に変わったときは、意図的にTaskを作成してください。AgentがSlackから作成する場合は、スレッドを紐づけることでコメントとメッセージを同期させ続けられます。
SlackメッセージからSharklyの自動化ワークフローを開始できますか?
今回のリリースではできません。Slackはワークフロー内でアクションとしては利用できますが、Events API経由のSlackトリガーはまだ接続されていません。



