コンテンツにスキップ

自分の Google を接続する(Enterprise・v1.76.0)

会社の共用アカウントを変更せずに、AI 社員へ自分の Google の利用を許可できます。利用を許す社員は本人が選び、いつでも取り消せます。

管理者が「連携 → Google」で Google アプリを設定し、必要に応じて Google 連携を有効にしてください。認証情報の保護には対応する OS キーチェーンが必要です。個人の認証情報はその保護キーで封印します。パスワードだけの保護、キーチェーンが利用できない状態、読めない保存データでは個人の利用を拒否します。Linux と Docker には現在対応するキーチェーン実装がありません。

「自分の接続」に表示される戻り先 URL 全体を Google アプリに登録します。末尾は /api/me/google/callback です。許可リストの HTTPS ダッシュボードは元のアドレスを使い、それ以外は同じポートの HTTP ループバックへ戻して貼り付けで完了します。パスとポートを Google の登録値に合わせてください。エラー時は登録を修正し、認証を緩めたりローカルのコールバックを公開したりしないでください。

Google の外部アプリが テスト 状態の場合、更新用認証情報は七日後に失効します。Google が示す基本的な本人情報だけを求める例外は、この接続が要求する業務サービスには該当しません。Workspace の内部アプリと個人 Gmail の本番審査は別の条件です。制限付き Gmail 権限には追加の Google 審査やセキュリティ評価が必要になる場合があります。本番利用前に適用条件を確認してください。Google の失効条件、Web アプリの認可を参照してください。

DuDuClaw は Google を開く前に、要求する権限でアクセスできる Google データ、認証情報と取得内容の処理・保存場所、設定した AI プロバイダーが Google Workspace データを汎用モデルの学習や改善に使用してはならないことを表示します。リンク先のプライバシーポリシーを読み、明示的に確認してください。公式 UI は確認なしでは続行できず、RPC にもこの確認を明示的に含める必要があります。管理者が選択したプロバイダーの遵守を確認できない場合は、適切なローカルモデルを使用するか、Google を接続しないでください。

Google の認可は専用の Google 接続フローだけで受け付けます。カスタム OAuth provider または remote MCP の issuer、認可エンドポイント、token エンドポイント、要求 scope のいずれかが Google と判定された場合、generic OAuth は拒否します。学習データ行に信頼できる source lineage が付き、Google Workspace データを含まないと証明できるまでは、すべてのインストールでデータセットの構築・エクスポートと新しい fine-tuning job を拒否します。既存 job の確認・中止とデータセットの削除は利用できます。

この開示リビジョンより前に作成した接続は、現在の開示を確認して再接続するまで、利用も更新もできません。古い接続はローカル切断とプロバイダー側の失効処理のためには残りますが、DuDuClaw が暗黙に同意済みへ昇格させることはありません。

  1. Enterprise ダッシュボードで「自分の接続」を開き、Google データ利用の開示を読んで確認してから「自分の Google に接続」を選びます。古いログイン認証情報では再ログインが必要です。
  2. 新しいウィンドウで Google の許可を完了します。個別のサービスを外すこともできます。Google が実際に返した許可だけを保存し、許可していないサービスは利用できません。
  3. ダッシュボードへ戻ります。最後のループバックページが開けない場合は、アドレスバーの URL 全体を元の画面へ貼り付けます。他人へ送らないでください。
  4. 接続した Google メールアドレスを確認します。DuDuClaw のログイン用メールとは異なるアカウントも接続でき、相違は画面に表示します。
  5. Google 連携の全体スイッチが無効なら接続を保存して待機します。個人の接続で全体設定を有効にはしません。

戻りコードだけでは接続は完了しません。開始した本人と同じ検証済みログインで、十分以内に完了する必要があります。使用済み、期限切れ、新しい操作で置き換えたもの、解除済みの手順は再利用できません。アクセス用・更新用の認証情報は、ダッシュボードの応答、URL、履歴、社員設定へ返しません。

管理者は社員の「接続」で「主担当者に合わせる」または「同僚を指定」を選べます。選択された人は有効な直接 Owner である必要があります。複数の Owner では明示的な主担当者を使い、古い曖昧なデータは管理者の選択を求めます。二人目を追加すると、それまで唯一だった Owner を主担当者として保持します。削除・降格後はその指定を外し、一人だけ残ればその人を使います。

主担当者の変更前に確認画面を表示します。社員が実行中のブラウザーセッションを停止し、保存済みのブラウザーログインを消去してから変更します。消去に失敗した場合、主担当者は変更しません。最後の書き込みと同じトランザクションで、管理者が有効で管理者権限を持ち、パスワード変更が不要であることを再確認するため、ブラウザーの終了待ち中に失った権限では変更できません。A→B→A と戻しても、A の以前のブラウザーログインは復元しません。

主担当者を変更する同じトランザクションで、社員ごとの主担当者バージョンも増加します。保存済みブラウザーログインは、同じデータベーススナップショットのバージョンと Owner 情報を確認するため、重なった A→B→A の変更でも、消去後・書き込み前に作られたログインは復元できません。他の社員のバージョンは変わりません。この更新後、古い形式で保存されたブラウザーログインは次回の使用時に破棄します。再度ログインして新しい状態を作成してください。

Owner は自分の Google か無効化を選べます。依頼者の範囲を狭めたり会社アカウントへの代替を無効にしたりできますが、範囲の拡大や他人のアカウント選択はできません。保存前に共有範囲の確認が必要です。

管理者ではない直接 Owner が Google を無効にすると、現在の requesters 制限を保持します。有効な、より狭い範囲は指定できますが、明示的な範囲の拡大は拒否します。無効化では会社アカウントへの代替も無効にします。本人のアカウント user:<本人ID> を再び有効にしても依頼者の制限を保持します。owner は主担当 Owner として解決された人が呼び出し元本人である場合にのみ選択でき、本人による共有範囲の確認が必要です。管理者が none または home に変更する場合は従来のポリシー消去を維持します。通常の社員更新、現在のアクセス権の確認、比較してからの書き込み(CAS)、本人同意の規則は変わりません。

管理者の設定は本人の同意ではありません。本人が「自分の接続」で社員ごとに許可・拒否します。紐付いた同僚、許可チャンネル、依頼者ルールを表示します。公開の訪問者は常に拒否します。定期実行も社員・本人の状態・同意を確認し、owner_only で人の依頼者がある場合は本人である必要があります。

本人が許可を取り消すと後続の呼び出しを直ちに拒否し、管理者は代理で同意できません。一般の社員編集画面から自己アカウントを追加せず、「接続」で同意と監査を記録してください。

社員専用の外部接続キーだけでは依頼者本人を識別できません。専用 Google ネイティブ実行は、一回限りの承認で固定したアカウントと最終引数を使い、現在の依頼者、Owner、本人同意を再確認します。個人アカウントの選択には、管理者による明示的な requesters = "anyone" の許可が必要です。個人アカウントを設定したリモート HTTP Google 接続では、操作ごとに実際の依頼者と現在の権限を確認します。以前のツール探索時の依頼者を引き継ぎません。個人 oauth://google の stdio 接続は引き続き拒否します。製品内の個人 Google ネイティブツールは従来どおり依頼者と本人同意を確認し、公開の訪問者を拒否します。他の外部経路は別途検証が必要です。

  • 失効やサービスの追加には再接続します。呼び出しごとに有効な本人、Owner、同意、Google アプリ、実際の許可、接続版を確認します。更新は gateway のみで行い、同一人の並行更新は直列化します。
  • 解除は先にローカル接続を削除し、進行中の手順を無効にしてから Google の失効を試みます。管理者も「連携 → Google」で解除できます。退職・削除時は個人接続を除去します。除去に失敗しても無効な本人の利用は拒否します。
  • Google の失効は許可全体に影響します。他の個人記録が同じ Google 識別子・メールを使う場合や、会社アカウントと同じ場合はローカルだけ削除します。保存データが読めない、ブリッジの本人が不明、会社の認証情報が期限切れ、会社のアカウント確認に失敗した場合も Google 側では失効しません。許可全体を取り消す場合は Google の接続済みアプリ設定を確認してください。
  • 会社のドメイン委任は別です。個人接続の解除では削除しません。
  • 過去三十日の履歴は保存中の最大五百件のみで、日時、社員、ツール名、成否を表示します。入出力・メール本文は返しません。古い記録はローテーションで削除されることがあります。
  • 個人メールは一通ずつ確認します。有効な本人は保存された自分のアカウントのメールを読めます。共用・旧データ・ドロップフォルダーはより厳しい権限を維持し、閲覧権限で外部送信や承認を許可しません。

失効結果が不明な場合のオフライン復旧

Section titled “失効結果が不明な場合のオフライン復旧”

許可の交換・本人確認・保存と、失効の判断・プロバイダーへの要求を同じプロセス間ロックで調整します。会社 OAuth のコールバック、CLI・標準ツール共通の更新経路、動的なリモート OAuth の交換・更新も対象です。ローカルの解除と永続版の無効化は、ロック待ちより先に行います。更新時は古い処理が回避しないよう全 gateway・CLI を再起動してください。

信頼する Google 失効エンドポイントからの同期 HTTP 200 のみを、その要求への確認とします。他の応答、通信エラー、タイムアウト、取消、送信後の異常終了では <home>/locks/google-grant-revoke-uncertain.json を保持します。要求を送る前に書き込み・同期します。この記録がある間、新しい Google・リモートの許可を拒否し、解除済みのローカル利用も止めたままです。リモートの本人不明、他の会社 OAuth の本人不明、本人確認失敗ではローカルのみ解除し、provider_revoked=false と理由を監査へ記録します。

オンラインの解除 RPC や時間経過による自動解除はありません。再試行の成功、クライアント ID の変更、Google のアカウント設定画面は、以前の要求が終了した証明にはなりません。復旧は外部の人による確認に依存する例外で、プログラムが安全を確認するものではありません。

  1. 新規接続を止め、不確定記録、操作 ID、監査、インシデント記録を保存します。
  2. Google で古いアプリの許可を取り消し、以前の要求が終了した外部の確認を得ます。確認できなければ記録を保持し、待ち時間を推測せずプロバイダーへ問い合わせます。
  3. そのデータディレクトリを使う全 gateway・CLI を停止します。外部確認後のみ、オフラインの運用担当者が記録を有効なファイル名から退避し、操作 ID と理由を監査用に保存できます。他の認証情報・ロックファイルは削除しません。
  4. 再起動し、本人が再接続します。運用担当者が外部証拠に基づいて解除した旨を記録します。製品が遅延した要求のリスク消失を検証したわけではありません。

異なる OAuth クライアントも同一 Google Cloud プロジェクトに属する場合があるため、ID の変更を自動復旧の証明には使えません。

Unix では守門ファイル・locks ディレクトリ・home 親ディレクトリの同期成功後のみ失効要求を送ります。Windows は必要なディレクトリ永続化が未実装のため、個人接続の解除はローカルのみです。通常の接続・更新は利用できます。Unix の試験を Windows の停電耐性の証明とはしません。動的なリモート OAuth は個人・会社の認証ファイルの有無にかかわらずローカルのみ解除します。プロバイダー側は本人が取り消してください。

config.toml
[integrations.google_identity]
allowed_domains = ["example.com"] # 空欄は制限なし
# agent.toml
[google]
identity = "owner" # または "user:<直接 Owner の id>"
fallback = "none" # 管理者は明示的に "home" へ変更可能
requesters = "bound_people" # "owner_only" も可。"anyone" は確認が必要

allowed_domains は Google の組織ドメインを優先し、なければメールのドメインを確認します。Workspace の所属の独立した証明ではありません。不正な設定は拒否します。

本人向け RPC は me.google.status、connect_start、connect_finish、connect_paste、disconnect、consents.set(後五つも me.google 配下)です。本人 ID は検証済みログインから取得します。users.google_disconnect と agents.primary_owner_set は管理者専用です。この機能は Enterprise 専用で、Personal は既存の home 接続を維持します。

封印した記録は <home>/person_credentials/store.json に保存し、ディレクトリ・ファイルを OS ユーザー専用にして永続版で古い書き込みを拒否します。会社の OAuth 保存データは移行しません。バックアップ・移設時は対応する OS キーチェーンを保持し、利用中のダウングレードは行わないでください。

同じ OS ユーザーで無制限の Bash を使える社員を、この製品の権限だけでは隔離できません。製品経路の回避やローカル状態の改変が可能です。能力は必要最小限にしてください。また Google の Gmail 下書き権限自体には送信能力がありますが、標準の下書きツールは送信しません。

関連:標準 Google Workspace、Google PKCE、OpenID の本人情報、Google の失効。

アカウント選択と状態確認(v1.76.0)

Section titled “アカウント選択と状態確認(v1.76.0)”

会社アカウントへの代替では、すでに許可されたサービスのスコープを、最初に選択したネイティブツールへ固定します。従来のいずれか一つでよい許可ルールは変わりません。元の個人アカウントが利用できず、管理者が代替を許可した場合にだけ、同じ会社共有 OAuth 接続を選びます。利用可能だった個人アカウントを、後のエラーで会社アカウントへ切り替えることはありません。

専用接続の承認では、今回選んだアカウントと最終引数を固定します。会社アカウントへの代替を選ぶと、承認カードに今回使う会社共有接続と、Google アカウントの主体が未検証であることを表示します。検証済みメールアドレスとしては扱いません。google_status はその一度限りの承認を消費し、トークンの取得や Google への接続テストをせず、ローカルの承認記録だけを報告します。

選択済みアカウントの専用送信処理は、18 個のネイティブ HTTP ツールを対象とします。操作中は承認済みアカウントを維持し、自動再試行やリダイレクトを行いません。正常に選択された個人アカウントの後続エラーで会社接続へ切り替えません。会社接続を使った結果には、Google アカウントの主体が未確認である旨を付記します。リモート Google MCP の拡張には、以下の独立した操作期限を使います。会社のサービスアカウント、Apps Script、委任は次の選択規則に従います。

Google に届いた可能性があり結果を確認できない場合は result_unconfirmed を返します。書き込みは Google 側を確認してから再試行を判断してください。取消やタイムアウトで遠隔の変更が取り消されるわけではありません。専用経路の制限は全体 120 秒、HTTP 要求ごとに 30 秒です。応答ごとに 4 MiB、操作全体の応答は 16 MiB、要求 URL と本文は 1 MiB、HTTP 要求は最大 26 回、結果全体は 512 KiB とし、Gmail 検索は最大 25 通です。上限超過を部分成功として返しません。従来経路の制限は変わりません。

リモート HTTP Google MCP は、元の管理者設定、接続先、ヘッダー、ツール、最終引数を操作ごとに固定します。正常な個人選択の後続エラーで会社接続へ切り替えません。許可済みの会社代替は OAuth のみを使い、Google 主体が未確認である旨を表示します。会社アカウントのみとドメイン委任は従来の動作を維持し、この拡張の対象外です。設定変更や新しい依頼者の権限不足は拒否します。

待機、準備、三つのプロトコル POST、結果処理には同じ期限を使います。要求 frame は 16 MiB、各 POST の応答はそれぞれ 16 MiB が上限で、操作全体の合計上限ではありません。自動再試行、リダイレクト、環境 proxy を使いません。期限後の結果はアカウント通知や新しい参照 ID とともに保留します。取消で Google の書き込みは撤回されません。結果が不明なら Google 側を確認してから再試行を判断してください。開始済みのローカル記録処理は後から完了することがあり、取消ですべての記録が直ちに削除される保証はありません。

リモート拡張は v1.76.0 に含まれます。M1/CLI のローカル重点テストと独立したコード・セキュリティ審査は、下記の統合検証の範囲で通過しました。以前の D1 の証拠は別に保持し、実際の Google 接続や利用者の受け入れを証明するものではありません。

システムキーチェーンとローカルの同期読み書きはタイムアウトで強制中断できません。戻った時点で同じ期限を再確認し、送信や結果の引き渡しを判断します。

Home サービスアカウントが設定されていれば最初に試し、未設定の場合だけ OAuth を試します。直接接続の資格情報取得に失敗した場合、承認前に設定済み Apps Script を選択できます。承認カードは OAuth、サービスアカウント、Apps Script を区別し、架空の OAuth ID や確認済みメールアドレスを作りません。委任の依頼者・保護の拒否は停止し、明示した Home フォールバックと対象の soft failure がある場合だけ会社接続を利用します。

個人接続から会社接続へ切り替える場合、既存 Ask の前に資格情報を一度だけ準備します。サーバーの準備期限は全体で18秒、CLI のタイムアウトは20秒のままです。承認スタンプの名目期限は1800秒ですが、準備した資格情報は先に失効することがあります。準備期限には結果を返すまでを含み、同期チェックが遅れて戻っても操作を開始しません。システム時計を戻しても、準備済み OAuth 資格情報の有効期間は延びません。失効・変更時は再選択と再承認が必要で、Ask 後に更新や再選択はしません。保留の上限は全体1024件、従業員ごと32件、1件64 KiB、合計8 MiBで、保持する資格情報と準備中の予約を含みます。大きなシークレットは容量超過で拒否されます。

サービスアカウントと委任は18個のネイティブ HTTP ツールおよび既存の全スコープを使うリモート Google MCP を対象とします。Apps Script は Gmail 検索・読取・下書き、Calendar 一覧・作成、Sheets 読取・追記の7操作です。CC、参加者、Meet、リモート MCP bearer は対象外です。状態照会はトークン取得や Google 接続テストをしません。データ操作は選択済み接続を維持し、自動再試行・リダイレクト・環境 proxy を使わず、既存のサイズ制限を維持します。Bridge は検証済み302/303から一度だけ資格情報なしの結果 GET を行い、POST と GET は同じ60秒期限です。結果 URL に元の Bridge シークレットが含まれる場合は GET 前に拒否し、書き換えて送信しません。送信済みの可能性がある書込み失敗は未確認として、Google を確認してから再試行してください。

ネイティブツールの attendees 引数はカンマ区切りの文字列で、配列ではありません。Bridge は空でない cc、CSV から解析した空でない参加者リスト、または with_meet=true を I/O 前に拒否します。空の cc、空の参加者リスト、with_meet=false はこれらの未対応機能を要求せず、通常の要求として続行できます。未知のフィールドや型の誤りをすべて拒否する保証はありません。

ファイル、環境変数、設定、マーカーのローカル変更を検出します。更新通知のない Keychain や外部シークレット管理は操作単位のスナップショットで、外部の更新やサービス復旧は即時には分かりません。同期 OS/キーストア処理は強制中断できず、復帰後の期限確認で次の処理を止めます。複数ファイルの観察と確認直後の競合は限界として残ります。変更は v1.76.0 に含まれます。W3 のローカル重点テストと独立したコード・セキュリティ審査は通過しました。実 Google/Apps Script 互換性、各プラットフォーム、ユーザー受入れには別の証拠が必要です。CI は各 PR の最新 head で確認します。メールポーリングなどの既存自動化 API は対象外です。

選択中にApps Scriptへ健康確認POSTをしません。資格情報取得の過去の失敗はAsk前の選択根拠であり、現在のサービス状態ではありません。直接のデータ要求を送信した可能性がある場合、Bridgeへの二重送信はしません。既存direct→Bridgeの動作は旧API経路に残します。

統合ソース 4e37c1f3 で四つのテストバイナリをコンパイルし、22 コマンドで 107 件のローカル重点テストを通過しました。内訳は M1/CLI 43 件、W3 58 件、依頼者ポリシー回帰 6 件で、失敗・無視はともに 0 件です。独立したコード、セキュリティ、実行記録の審査も通過しました。全テストや単独 PR head の検証ではなく、各 PR の最新 CI は別途確認が必要です。過去の失敗は受け入れ記録に保持します。

実 Google/Workspace 管理コンソール、公式リモート MCP によるトークン受理、実 Keychain、Windows 実機、出荷 CLI stdio、有料ライセンス、ブラウザーでの利用者受け入れは未検証です。外部の資格情報更新には上記のスナップショット制限が残り、リリースやデプロイを示すものではありません。