Copilot Cowork の内側を覗いてみた:セッションログから読み解く AI エージェントハーネス(コンテキスト・スキル・MCP)の設計

by 杉本和也 | June 30, 2026

Copilot Cowork の内側を覗いてみた:セッションログから読み解く AI エージェントハーネス(コンテキスト・スキル・MCP)の設計

こんにちは。CData Software Japan リードエンジニアの杉本です。

最近正式リリースされたばかりの、「Copilot Cowork」皆さん使ってますか? Copilot Cowork は Microsoft 365 環境向けの AI エージェントプラットフォームですが、たくさんの機能があって、「これはできるのかな?」「あれはどうなっているのかな?」と気になってしまいますね。私もSNSで日々情報収集をしながら、キャッチアップしています。

そんなCopilot Cowork ですが、最近セッションログ(JSONL 形式)を入手する機会があり、中身を分析してみたところ、ハーネスの設計がとても興味深かったので、その内容をまとめてみました!

イマイチ網羅的に見ることができなかったスキルやMCP、内部の動作の仕組みが垣間見えて、Copilot Cowork を活用する上で参考になりそうな情報が盛りだくさんです。

ログファイルの取得方法

Copilot Cowork のセッションログは、Copilot Cowork 自身に頼むと取得できます。以下のプロンプトを送ると、サンドボックス内のファイル一覧が表示されます。

'/mnt/workspace/agent-state/projects/-mnt-workspace/' 配下にあるファイルを教えて

Copilot Cowork の内側を覗いてみた:セッションログから読み解く AI エージェントハーネス(コンテキスト・スキル・MCP)の設計

セッション本体の会話ログ(.jsonl)とサブエージェントのログが一覧表示されます。続けて「ダウンロードしたい」と伝えるとダウンロードリンクが生成されます。

ちなみに今回は「kintone から今年クローズした案件を取得して、担当者・金額・業種別にまとめた PowerPoint を生成して Teams に投稿する」という実際のセッションのログを分析しました。ログのレコード数は 218 件、実行モデルは claude-opus-4-8 です。

セッションログ(JSONL)の構造

Copilot Cowork のセッションログは Claude Code のトランスクリプト形式(JSONL)で記録されています。1 行 1 レコードです。

このことから、Copilot Cowork がAgent SDK(Claude Code SDK)ベースで実装されていることが推察されますね。

Copilot Cowork の内側を覗いてみた:セッションログから読み解く AI エージェントハーネス(コンテキスト・スキル・MCP)の設計

取得したデータは以下のような感じです。

Copilot Cowork の内側を覗いてみた:セッションログから読み解く AI エージェントハーネス(コンテキスト・スキル・MCP)の設計

Claude Code の JSONL には全部で 9 種類のレコードタイプが存在しますが、今回のログで確認できたのは以下の 7 種類です(ai-titlecustom-title はこのログには含まれていませんでした)。

タイプ

今回の会話での件数

内容

assistant

104

モデルの応答・ツール呼び出し

user

61

ユーザー入力・ツール実行結果

queue-operation

20

enqueue / dequeue 操作

attachment

10

フックの実行結果・コンテキスト注入

last-prompt

13

直近のユーザープロンプト

mode

5

実行モード(normal

system

5

フック完了サマリー

エントリーポイントは sdk-py(Python SDK 経由)、バージョンは 2.1.161、作業ディレクトリは /mnt/workspace(Linux サンドボックスコンテナ)です。

Claude Code のフック機能によるコンテキスト注入

Claude Code の JSONL トランスクリプトにはモデル API へ渡される system パラメータの中身は記録されないため、固定のシステムプロンプトがあるかどうかはログからは確認できませんでした。ここも知りたいところでしたが、ちょっと残念。

ただし、Copilot Cowork が Claude Code のフック機能を活用して、セッション中に動的にコンテキストを注入しているのは明確でした。

このセッションで注入されていたコンテキストは以下の 3 種類です。

種類

タイプ

タイミング

内容

deep-reasoning

hook_success

セッション開始時に1回

推論フレームワーク全文(約6,400文字)

skill_listing

スキル一覧

毎ターン

全28スキルの名前+トリガー条件文(約12,700文字)

task_reminder

タスク一覧

毎ターン(内容は随時更新)

その時点のタスクリスト(JSON)

skill_listing は毎ターン同じ内容が流れ続け、task_reminder だけがセッション中に内容が変化する真の動的コンテキストです。ここからタスク管理の仕組みが見えますね。
deep-reasoning はセッション開始時の1回のみで、その後はキャッシュヒットになります(キャッシュトークンの推移で確認できます)。

ちなみに、ユーザーのプロフィール情報(氏名・メールアドレス等)については、フックの注入コンテキストには含まれていませんでした。ログに現れるユーザー情報はすべてツール実行の返り値(GetDefaultDrive のオーナー情報など)として登場しており、必要になったときにツールで取得する設計と考えられます(system パラメータに含まれているかどうかはログからは確認できません)。

一方、MCP ツール定義(93ツール)はフック注入ではなく、セッション開始前に MCP サーバー接続経由で静的にロード・キャッシュ済みです。最初のターンで cache_read=78,824トークン がすでに存在することからわかります。

セッション開始前  → MCPサーバー接続・ツール定義をキャッシュ(静的ロード)
セッション開始時  → SessionStart フック: deep-reasoning を注入(1回)
各ターン開始時    → skill_listing(28スキル)を注入
                  → task_reminder(タスク一覧)を注入(内容は随時更新)

Claude Code のフック機能を使ってコンテキストを注入する方式の利点は、スキルや設定の変更がセッションごとに反映される点です。固定のシステムプロンプトに組み込む場合と比べて、Copilot Cowork 側でスキルの追加・削除・更新を柔軟に管理できます。

deep-reasoning:常時有効な推論フレームワーク

SessionStart フックで最初に注入されるのが deep-reasoning スキルです。これはすべてのエージェントに自動適用される implicit skillで、明示的に呼び出す必要はありません。

deep-reasoning の中では ultrathink モードが有効化されていたのが興味深いですね。ultrathink は Claude Code のネイティブキーワードで、Claude の extended thinking(拡張思考)の思考バジェットを最大に引き上げます。thinkthink hardthink harderultrathink という段階があり、最終回答を出す前の内部思考に使えるトークン数が最大になります。deep-reasoningultrathink で思考量を確保しつつ、その上に認知バイアス対策や信頼度ルールといった独自フレームワークを重ねた構成です。

5つの認知的ハザードと対処パターン

deep-reasoning が面白いのは、単なる動作指示ではなく、モデルが陥りやすい認知的ハザード(コグニトハザード)への対処パターンが定義されていることです。

ハザード

検出条件

対処

Inherited certainty

ユーザーの主張をそのまま受け入れようとしている

仮説として扱い、ツールで外部検証する

Self-correction trap

「推論を確認しよう」と言いかけている

自己検証は不可。Read / Grep / WebSearch を使う

Premature switching

現アプローチが遅いが失敗していない

2 回以上試みてから切り替える

Confirmation bias

証拠がすべて初期仮説を支持している

批判・問題点を能動的に検索する

Hasty commitment

最初に見つけたアプローチに飛びつこうとしている

代替案を検討してからコミットする

「Self-correction trap」が興味深いです。「自己検証は不可」として、必ず外部ツール(Read・Grep・WebSearch)を使うよう強制しています。LLM の自己評価の信頼性が低い、という認識に基づいた設計な感じでしょうか。

信頼度キャリブレーション

deep-reasoning では、何かを断言する前に「自分はこれをどれくらい確信しているか」を 0〜100 のスコアで自己評価するよう指示されています。このスコアに応じて取るべきアクションが定められています。

スコア

意味

アクション

0–24

不確実

明示的に述べ、検証方法を特定する

25–49

可能性あり

不確実性を注記してから進む

50–74

可能性高い

主要な主張を検証する

75+

検証済み

自信を持って断言する

スコア 75 以上のみアサーション可、というルールです。それ以下の場合は不確実性を明示し、検証方法を示す必要があります。

メタ認知シーケンス

すべての処理は以下のシーケンスで進めるよう定義されています。

VALIDATE → DECOMPOSE → SOLVE → VERIFY → SYNTHESIZE → REFLECT
  • VALIDATE:具体的な解法に入る前に原則・前提を抽象化する

  • DECOMPOSE:最小のサブ問題から積み上げる

  • SOLVE:中間ステップを明示しながら体系的に進める

  • VERIFY:Draft → Verify → Revise のプロトコルで検証する

また「State Externalization」というルールがあり、作業の追跡は TaskCreate / TaskUpdate で行い、mental tracking(頭の中で管理)は禁止となっています。これがタスク管理の仕組みにつながります。

スキル体系:28個を5カテゴリに分類

各ターンの注入コンテキスト skill_listing には、利用可能なスキル一覧と各スキルのトリガー条件(「何を言ったら発動するか」)が自然言語で定義されています。28 個のスキルを 5 カテゴリに分類できます。

生産性スキル(6個)

スキル名

トリガー例

概要

calendar-management

「カレンダーを整理して」「会議が多すぎる」

スケジュール管理・フォーカス時間防衛・会議トリアージ

daily-briefing

「今日のブリーフィング」「今日の予定は?」

カレンダー・メール・Teams を集約した優先度付き日次概要

meeting-intel

「会議を要約して」「アクションアイテムを抽出して」

会議ブリーフ・議事録・参加者コンテキスト提供

schedule-meeting

「会議をスケジュールして」「空き時間を探して」

会議スケジューリング・空き時間検索・会議室予約・リスケ

stakeholder-comms

「経営層向けに報告して」「チームにアナウンスして」

読者に応じた経営層更新・チームアナウンス・リスクエスカレーション等の文書生成

deep-research

「詳しく調べて」「ファクトチェックして」

出典付きの深掘り調査・ファクトチェック

ドキュメント生成スキル(7個)

スキル名

出力形式

概要

docx

Word (.docx)

レポート・SOP・提案書・議事録など。TOC・追跡変更・コメント対応

pptx

PowerPoint (.pptx)

プレゼン・ピッチデック。pptxgenjs + QAワークフロー

xlsx

Excel (.xlsx)

スプレッドシート・数式・チャート・CSV など。LibreOffice で数式再計算も対応

pdf

PDF

生成・結合・分割・OCR・フォーム入力

html

HTML

スタンドアロン HTML ページ・レポート・メール用 HTML(base64 画像埋め込み対応)

render-ui

Adaptive Card

構造化データ・画像 URL をダッシュボード/グラフ/テーブルのカード形式でレンダリング

画像生成

PNG / 画像

テキストから画像・アイコン・図を生成・編集

今回のセッションでは pptx スキルが使われており、pptxgenjs(Node.js)を使った生成ロジックが内包されています。

開発・コード品質スキル(7個)

スキル名

概要

verify

コード動作検証

code-review

コードレビュー

simplify

コード簡略化・リファクタリング

run

アプリ起動・実行確認

init

プロジェクト初期化

review

PR レビュー

security-review

セキュリティレビュー

推論・分析スキル(3個)

スキル名

概要

deep-reasoning

前述の常時有効な推論フレームワーク(implicit skill)

claude-api

Claude API 仕様参照

debug-trajectory

セッショントランスクリプトを HTML で可視化(明示的トリガー限定)

debug-trajectory明示的トリガー限定と定義されており、/debug コマンドまたはスキルチップで呼び出した場合のみ発動します。

NEVER route from inferred intent — invoke ONLY when the user's current turn explicitly references this skill via the markdown chip [/debug] OR when the user types the literal command /debug as their entire message.

「debug という言葉が含まれていても、このスキルを呼び出してはならない」と明示されています。意図を推測して発動するスキルと、明示的に呼び出すスキルを分けて設計している点が興味深いです。

設定管理スキル(5個)

スキル名

概要

update-config

settings.json による設定変更・フック管理

keybindings-help

キーバインドカスタマイズ

skills

スキル管理

loop

繰り返し実行

fewer-permission-prompts

権限プロンプト削減

ネイティブツール:Claude Code SDK が提供する8ツール

MCP ツールとは別に、Claude Code SDK がネイティブで提供するツールが 8 つあります。これらは MCP サーバーへの接続ではなく、エージェントの動作制御やファイル操作・スキル呼び出しを担います。

ツール名

説明

TaskCreate

タスクを作成(subject・description・activeForm)

TaskUpdate

タスクのステータスを更新(pending / in_progress / completed)

Bash

シェルコマンドを実行

Read

ファイルを読み込む

Write

ファイルを書き込む

Skill

スキルを呼び出す

Agent

サブエージェントを起動(description・prompt)

Glob

ファイルパターンマッチ検索

deep-reasoning で「作業追跡は必ず TaskCreate/TaskUpdate を使え、頭の中での管理(mental tracking)禁止」と定められているのはこのネイティブツールへの誘導です。また Skill ツールが pptx などのスキルを呼び出す窓口になっており、Agent ツールは重い処理(PPT 生成など)をサブエージェントに分離する際に使われます。

MCPサーバー:93ツール・6サーバー構成

Copilot Cowork は 6 つの MCP サーバーと接続しており、合計 93 ツール(M365 系 88 + CData Connect AI 5)が利用できます。

サーバー

ツール数

概要

Outlook

29

メール送受信・下書き・フォルダ・ルール・自動応答

Teams

24

チャット・チャネル・メンバー管理・メッセージ投稿

SharePoint / OneDrive

14

ファイル・フォルダ・サイト・リスト操作

Calendar

13

予定管理・空き時間検索・会議室予約

People / 組織

7

人物検索・プロフィール・組織ツリー

Graph / 横断検索

3

M365 横断検索・Graph API 直接アクセス

会議トランスクリプト

3

文字起こし取得・要約

CData Connect AI ※

8

80以上のデータソースへの SQL アクセス

※ ちなみにCData Connect AI は私が検証のためにセルフサービスで追加したプラグイン(標準搭載ではありません)です。

Microsoft 365 系(88ツール)

Microsoft 365 系は合計 88 ツールで、7 つの領域に分かれています。

Outlook(29ツール)

ツール名

機能

ListMessages

受信トレイ/フォルダのメール一覧(送信者・日付・添付・未読等で絞込)

GetMessage

メール本文・添付の全文取得

SendEmailWithAttachments

メール作成・即時送信(添付対応)

CreateDraftMessage

新規メールの下書き作成

CreateReplyDraft

返信の下書き作成

CreateReplyAllDraft

全員返信の下書き作成

UpdateDraft

下書きの宛先・件名・本文の更新

SendDraftMessage

既存の下書きを送信

AddDraftAttachments

下書きへの添付追加

UploadAttachment

添付アップロード(3MB以下)

UploadLargeAttachment

大容量添付アップロード(3〜150MB)

DeleteAttachment

下書きの添付削除

ReplyToMessage

送信者へ返信(即時)

ReplyAllToMessage

全員返信(即時)

ForwardMessage

メール転送(即時)

MoveMessage

メールを別フォルダへ移動

DeleteMessage

メール削除(削除済みアイテムへ)

FlagEmail

フォローアップフラグの設定/解除

UpdateMessage

既読・重要度・分類などの更新

ListMailFolders

メールフォルダ一覧

GetMailFolder

フォルダ詳細取得

CreateMailFolder

メールフォルダ作成

ListMailRules

受信ルール一覧

CreateMailRule

受信ルール作成

UpdateMailRule

受信ルール更新

DeleteMailRule

受信ルール削除

GetAutoReplySettings

自動応答(不在通知)設定の取得

SetAutoReply

自動応答の有効化・設定

DisableAutoReply

自動応答の無効化

Calendar(13ツール)

ツール名

機能

ListCalendarView

期間指定の予定一覧(定期予定を個別展開)

ListEvents

予定一覧(定期はマスター単位)

CreateEvent

予定の新規作成

UpdateEvent

予定の変更(出席者追加・リスケ等)

DeleteEventById

予定の削除

AcceptEvent

招待の承諾

DeclineEvent

招待の辞退

TentativelyAcceptEvent

仮承諾

CancelEvent

自分が主催する予定のキャンセル通知

ForwardEvent

予定の転送(FYI共有)

FindMeetingTimes

出席者の空き時間候補の検索

GetRooms

会議室一覧の取得

GetUserDateAndTimeZoneSettings

タイムゾーン・勤務時間設定の取得

Teams(24ツール)

ツール名

機能

ListTeams

参加チーム一覧

GetTeam

チーム詳細取得

ListChannels

チャネル一覧

GetChannel

チャネル詳細取得

CreateChannel

チャネル作成

CreatePrivateChannel

プライベートチャネル作成

UpdateChannel

チャネル名・説明の更新

ListChannelMembers

チャネルのメンバー一覧

AddChannelMember

チャネルへメンバー追加

UpdateChannelMember

メンバーの役割変更

ListChannelMessages

チャネルのメッセージ一覧

PostChannelMessage

チャネルへ投稿

ReplyToChannelMessage

チャネル投稿への返信

ListChats

チャット一覧(未読・相手で絞込)

GetChat

チャット詳細取得

CreateChat

チャット作成

UpdateChat

チャットのトピック変更

AddChatMember

チャットへメンバー追加

ListChatMembers

チャットのメンバー一覧

ListChatMessages

チャットのメッセージ一覧

GetChatMessage

チャットの特定メッセージ取得

PostMessage

チャットへメッセージ送信(宛先名で自動作成)

UpdateChatMessage

チャットメッセージの編集

DeleteChatMessage

チャットメッセージの削除

会議トランスクリプト(3ツール)

ツール名

機能

GetMyRecentTranscripts

期間内の直近の会議文字起こしを一括取得

ListMeetingTranscripts

特定会議の文字起こし一覧

GetMeetingTranscript

文字起こし本文(話者・タイムスタンプ付)取得

People / 組織(7ツール)

ツール名

機能

GetMyDetails

自分のプロフィール取得

GetUserDetails

特定ユーザーのプロフィール取得

GetMultipleUsersDetails

複数ユーザーのプロフィール一括取得

SearchPeople

人物検索(氏名・部署・役職・拠点等)

GetManagerDetails

上司情報の取得

GetDirectReportsDetails

直属の部下一覧

GetOrgTree

組織ツリー(配下全体)の取得

SharePoint / OneDrive(14ツール)

ツール名

機能

GetDefaultDrive

個人OneDrive/サイト既定ライブラリの取得

ListDrives

サイトのドキュメントライブラリ一覧

GetDriveChildren

フォルダ内のファイル・フォルダ一覧

GetDriveItem

ファイル/フォルダのメタデータ取得

ReadFileContent

ファイル内容の読み取り

SearchDrive

ドライブ内のファイル検索

CreateFolder

フォルダ作成

GetSite

SharePointサイトの取得

SearchSites

サイト検索

ListSubsites

サブサイト一覧

ListLists

SharePointリスト一覧

ListListColumns

リストの列(項目)一覧

ListListItems

リストアイテム一覧

GetOrgTemplateLibrary

組織のブランドテンプレートライブラリ取得

Graph / 横断検索(3ツール)

ツール名

機能

SearchM365

ファイル・メール・Teams・予定・Power BI 等の横断検索

QueryGraph

Microsoft Graph への読み取り(GET)アクセス

CallGraph

Microsoft Graph への書き込み(POST/PUT/PATCH)アクセス

QueryGraph / CallGraph は Graph API を直接叩けるため、上記カテゴリにないエンドポイントにも対応できます。なお Power BI 連携はこのいずれかのツールを通じて実現しており、個別ツールとしての分類はログ上では確認できませんでした。

CData Connect AI(5ツール)※セルフサービスで追加したプラグイン

kintone やSalesforce など、外部のエンタープライズデータへのアクセスを担うMCP サーバーです。Copilot Cowork のセルフサービス機能でユーザーが任意に追加できるプラグインであり、標準搭載ではありません。

ツール名

説明

getCatalogs

利用可能なコネクション一覧を取得

getSchemas

特定カタログのデータベーススキーマを取得

getTables

特定カタログ・スキーマのテーブル一覧を取得

getColumns

特定テーブルの利用可能なカラム一覧を取得

queryData

接続済みデータソースに SQL クエリを実行し結果を取得

getProcedures

特定カタログ・スキーマのストアドプロシージャ一覧を取得

getProcedureParameters

ストアドプロシージャのパラメータメタデータを取得

executeProcedure

ストアドプロシージャを実行

実際の処理フロー:15ステップで kintone → PPT → Teams

今回のセッション(「kintone から今年クローズした案件を取得して、担当者・金額・業種別にまとめた PowerPoint を生成して Teams に投稿する」)の処理フローを追ってみましょう。

タスク管理の仕組み

セッション開始直後に TaskCreate で 3 つのタスクが定義されます。

[
  { "id": "1", "subject": "kintoneの案件データ構造を確認", "status": "pending" },
  { "id": "2", "subject": "今年クローズした案件を取得", "status": "pending" },
  { "id": "3", "subject": "報告用パワーポイントを生成", "status": "pending" }
]

各タスクは pending → in_progress → completed と状態遷移し、blocks / blockedBy フィールドで依存関係も表現できるようになっています。

データ取得フェーズ(ステップ 1〜8)

まずkintone からデータを取得するために、CData Connect AI のMCP ツールを利用します。 getCatalogs で接続済みのデータソース一覧を取得し、Kintone_demo カタログを特定します。次に getInstructions で kintone ドライバーのガイダンスを取得し、getTables でテーブル一覧を確認して「案件管理」テーブルを見つけます。

getColumns でカラム定義を確認すると、商談フェーズ売上 (¥)主担当 Aggregate受注予定日会社名 などが確認できました。

-- 商談フェーズの値を確認
SELECT [商談フェーズ], COUNT(*) AS 件数
FROM [Kintone_demo].[Kintone].[案件管理]
GROUP BY [商談フェーズ]
ORDER BY 件数 DESC

結果:受注 8 件・提案中 6 件・内示 2 件・NULL 15 件。受注済み案件が 8 件であることを確認してから、担当者・金額・業種別の集計クエリに進んでいます。

PPT 生成フェーズ(ステップ 9〜10)

Skill ツールで pptx スキルを呼び出すと、スキル内部でまず Read ツールが /opt/workspace-config/.claude/skills/pptx/pptxgenjs.md(API リファレンス)を読み込み、Bash で日本語フォントの有無を確認します。その後 Write ツールで生成スクリプト(create-presentation.js)を出力します。

ここで注目したいのがサブエージェントの起動パターンです。スクリプトの実行・QA 検証は Agent ツールで別エージェントに委譲されます。

{
  "description": "Creating your presentation",
  "prompt": "Create the PowerPoint presentation by running an existing generation script, then QA it..."
}

サブエージェントへの指示には以下のルールが含まれていました。

Every Bash tool call description MUST use user-facing intent language — never mention scripts, file types, conversion steps, or internal tools

処理

description(表示テキスト)

スライド生成

"Building your slides"

エラー後再生成

"Rebuilding your slides"

QA 検証

"Checking the presentation for errors"

修正適用

"Fixing [specific issue]"

後処理

"Finalizing the presentation"

内部的な処理名をユーザーに見せず、意図ベースの言葉で表示する設計です。UX 配慮が設計レベルで組み込まれています。

また、日本語フォントがコンテナに存在しない場合の QA 検証についても明示的にルールが定められています。

The container may LACK Japanese fonts, so the QA preview images may show Japanese as boxes/tofu — this is a RENDERING-ONLY artifact and is NOT a defect in the .pptx itself. Therefore: verify TEXT CONTENT using python -m markitdown output/xxx.pptx. Use the QA images ONLY to judge LAYOUT.

フォント欠如による豆腐表示(日本語フォントが環境にない場合に文字が □ で表示される現象)は「レンダリングのみの問題」として、テキスト検証とレイアウト検証を分離しているのが面白いですね。

Teams 投稿・メール作成フェーズ(ステップ 11〜15)

PPT 生成後は Teams の ListTeamsListChannels でターゲットチャンネルを特定し、Graph API でファイルアップロード先(SharePoint の filesFolder)を取得します。ファイルをアップロードして共有リンクを生成し、PostChannelMessage でサマリーとリンクを投稿。最後に CreateDraftMessageAddDraftAttachments で Outlook のメール下書きを作成して完了です。

最終的なタスク一覧は 6 タスク(CData + Teams + SharePoint + 投稿 + メール下書き)がすべて completed になっています。

まとめ

今回のセッションログ分析から見えてきた Copilot Cowork の設計ポイントをまとめます。

Claude Code のフック機能を活用した動的コンテキスト管理
Claude Code SDK が提供する SessionStart フックを利用して、スキルと推論フレームワークを動的に注入する設計です。フックの仕組み自体は SDK のネイティブ機能であり、何をどう注入するかが Copilot Cowork 側の実装です。スキルの追加・更新がセッションごとに反映されます。

deep-reasoning による認知的ハザード対策
5 種類の認知的ハザードと対処パターン、75 以上でのみアサーション可という信頼度ルール、メタ認知シーケンスが常時有効なスキルとして定義されています。LLM の弱点を補う設計が丁寧に組み込まれている感じで面白いですね。

豊富なMCP ツールセット
Claude Cowork をベースにしたCopilot だからこそ、という強みだと思いますが、Microsoft 365 系・88ツールが標準のMCP ツールセットとして提供さているのは本当に強みですね。私が当初想定していたよりも、機能サポートの範囲も広い印象でMicrosoft としてもかなり本気で、Copilot Cowork に業務を行わせようという意識が感じられました。

今回調査をしてみて、個人的にも改めてハーネスの意義や実装アプローチの勉強になって、とても良かったです。Claude SDKや Claude Managed Agetns を通じて、自社のエージェントを作る機会がある方にも参考になる情報ではないでしょうか。