GuidesOneMux

プライバシーに配慮したコーディングセッションのためのClineCore設定

ClineCoreセッションの設定方法、機密データの露出を抑える方法、よくあるセットアップ問題のトラブルシューティングを解説する実践ガイドです。

AI

要約 · TL;DR

ClineCoreでは、共有するランタイム設定とセッションごとのモデル設定が分かれています。この仕組みを活用して、認証情報がプロンプトやログに含まれないようにし、保存データを必要最小限に抑えましょう。また、すべてのプロバイダーが同じパラメーターに対応していると決めつけずに設定を確認することが大切です。

要点

  • バックエンド、ツールポリシー、ランタイム機能は共有するClineCoreのオプションとして設定し、モデルや認証情報はセッションごとに渡します。
  • APIキーはサーバー側の環境変数で管理し、プロンプト、メタデータ、事前読み込みメッセージには決して含めないでください。
  • セッションメッセージ、識別子、使用記録は機密情報になり得ます。アクセスできる人と保存期間を決めましょう。
  • プロバイダー固有のフィールドやエンドポイントとの互換性は、プロバイダーのドキュメントで確認してください。ClineCoreのリファレンスは、すべてのプロバイダーに共通する対応を保証していません。
目次 (6)

プライベートなコードを送信する前にセッションを設定する

ClineCoreを使うと、アプリケーションでランタイムを作成し、モデルとランタイムの設定を指定してセッションを開始できます。プライバシーを守るために検討すべきなのは、どのプロバイダーを使うかだけではありません。セッションに渡すデータ、データを扱うツール、そして実行後にアプリケーションが何を保存・公開するかも重要です。

以下の例は説明用であり、動作確認済みのインテグレーションではありません。ClineCoreのリファレンスにはAPIの形式が記載されていますが、すべてのプロバイダーが同じモデルパラメーターやエンドポイント設定を受け付けるとは示されていません。プロバイダー固有のオプションを使う前に、必ず該当するドキュメントを確認してください。

共有設定とセッション設定を分ける

ClineCore.createのオプションでは、クライアント名、バックエンドモード、ツールポリシー、機能、自動化の有効・無効などを設定できます。startの呼び出しでは、セッションのモデルとランタイム設定を含むconfigが必要です。ドキュメントの例には、providerId、modelId、apiKey、systemPrompt、cwd、workspaceRoot、ツールとエージェントのフラグが含まれています。

サーバー側での最小限の設定例は次のとおりです。

import { ClineCore } from "@cline/sdk"

const cline = await ClineCore.create({
  clientName: "private-code-review",
  backendMode: "auto",
  toolPolicies: {
    // Set policies for the tools your application exposes.
  },
})

const session = await cline.start({
  prompt: "Review the selected files for risky input handling.",
  config: {
    providerId: process.env.CLINE_PROVIDER_ID!,
    modelId: process.env.CLINE_MODEL_ID!,
    apiKey: process.env.CLINE_API_KEY!,
    systemPrompt: "Review only the supplied code. Do not request secrets.",
    cwd: process.cwd(),
    workspaceRoot: process.cwd(),
    enableTools: false,
    enableSpawnAgent: false,
    enableAgentTeams: false,
  },
})

この例では、認証情報を扱う方法として環境変数を使っています。ただし、リファレンスではシークレットマネージャーの使用は指定されておらず、環境変数の名前も定義されていません。APIキーは信頼できるサーバー上で管理し、ブラウザー側のコードに送らず、セッション設定をアプリケーションのログに出力しないようにしてください。プロバイダーがエンドポイントや追加パラメーターを必要とする場合は、そのドキュメントの指示に従って設定し、ClineCoreが必要なフィールドに対応していることを確認してください。

プライバシーに関する判断を明確にする

セッションを開始する前に、エージェントに何が必要かを決めましょう。タスクに必要な場合は、リポジトリ全体ではなく、限定したワークスペースや選択したファイルだけを提供してください。エージェントに渡すデータから、シークレット、個人データ、無関係なファイルを除外します。システムプロンプトで取り扱い方針を伝えることはできますが、アクセス制御やデータの最小化の代わりにはなりません。

ツールへのアクセスも、プロンプトの内容と同じように慎重に確認してください。ClineCoreでは、デフォルトおよびセッションごとのツールポリシーを設定でき、ランタイム機能にはクライアント側が所有するツール実行機能や承認コールバックを含められます。タスクで不要なツールは無効にし、必要なツールについては、その作用に応じたポリシーと承認方法を設定してください。リファレンスにはこれらの設定用フックが記載されていますが、各ツールの動作は定義されておらず、特定のポリシーによってあらゆる機密操作を防げるという保証もありません。

セッション記録は機密情報になり得るものとして扱ってください。APIを使うと、セッションの一覧表示、メタデータとメッセージの取得、累積使用量の確認、記録の更新、セッションの削除ができます。こうした機能があるため、アプリケーションでは、これらのメソッドを呼び出せる人と、適用する保存期間のルールを決める必要があります。sessionMetadata、初期メッセージ、プロンプトには、シークレットや不要な個人情報を含めないでください。メタデータとメッセージはセッションデータであり、シークレットを安全に保管する場所ではありません。

distinctIdオプションは、安定したテレメトリ/ユーザー識別子として説明されています。使用する場合は、アプリケーションに安定した識別子が本当に必要か、個人を特定できる可能性があるかを検討してください。リファレンスには、テレメトリの収集、保存期間、匿名化について説明がありません。そのため、この識別子が匿名である、または設定すればすべてのテレメトリを制御できると考えないでください。

よくあるセットアップ問題のトラブルシューティング

  • セッション作成時に設定が拒否される: configが指定されていること、プロバイダーとモデルの識別子がプロバイダーの受け付ける値と一致していることを確認してください。提供されているリファレンスの内容は一例であり、プロバイダーの全一覧ではありません。
  • 認証に失敗する: サーバープロセスからAPIキーを参照できること、選択したプロバイダーに対応するキーであること、誤って空白を削除したり別の値に置き換えたりしていないことを確認してください。診断用プロンプトにキーを含めたり、チケットに貼り付けたりしてはいけません。
  • プロバイダー固有のオプションが無視または拒否される: ClineCoreのリファレンスは、エンドポイントやパラメーターがあらゆるプロバイダーで利用できるとは説明していません。あるプロバイダーの設定が別のプロバイダーでも使えると決めつけず、プロバイダーとSDKのドキュメントを確認してください。
  • セッションで意図以上の操作ができる: enableTools、ツールポリシー、指定した機能を確認してください。ツールが不要な場合は無効にしておき、ワークフローで必要なものだけを有効にします。
  • 履歴に機密情報が含まれている: readMessages、listなどのセッションAPIを呼び出すアプリケーション内の処理を確認し、適切な認可と保存期間の管理を適用してください。リファレンスにはこれらのAPIが記載されていますが、アプリケーション側の保存やアクセス保護については定められていません。
  • 処理が予期せず続く: セッションにはドキュメントに記載されたabortまたはstopメソッドを使い、アプリケーションでランタイムリソースが不要になったら解放してください。

繰り返し使える事前確認リスト

ClineCoreのワークフローを有効にする前に、認証情報がサーバー側に留まること、ワークスペースに必要なファイルだけが含まれること、プロンプトとメタデータにシークレットが含まれないこと、ツールへのアクセスが制限され確認されていること、セッション履歴の管理者と保存期間のポリシーが決まっていること、プロバイダー固有の設定が最新のドキュメントと照合されていることを確認してください。デバッグでは、セッションが開始されたか、どの内部リクエストIDが該当するかなど、機密性のない情報を記録します。認証情報、プロンプト全文、ソースファイルは記録しないでください。

ClineCoreのリファレンスが提供するのは、設定やセッション管理のためのフックであり、包括的なプライバシー保証ではありません。プライバシーに配慮した運用は、アプリケーションがデータをどう渡すか、ツールへのアクセスをどう制限するか、セッション記録をどう保護するか、認証情報をどう扱うかによって決まります。

参照元

よくある質問

ClineCoreの設定のうち、プロバイダーに依存しないものはどれですか?

リファレンスには、`clientName`、`backendMode`、ツールポリシー、機能、自動化などの共有ランタイムオプションが記載されています。セッション設定には、プロバイダーとモデルの識別子、認証情報、ランタイム関連のフィールドも含まれます。プロバイダー固有のエンドポイントやパラメーターとの互換性はリファレンスで確認できないため、別途確認してください。

ClineのプロンプトにAPIキーを含めても安全ですか?

いいえ。認証情報は信頼できるサーバー側の設定で管理し、ドキュメントに記載されたセッション設定の仕組みを通じて渡してください。キーをプロンプト、メッセージ、メタデータ、ログに含めないでください。

ClineCoreはセッションデータを自動的に匿名化しますか?

提供されているAPIリファレンスには、匿名化、テレメトリの保存期間、セッションデータの保護について記載がありません。メッセージ、メタデータ、識別子、使用記録は機密情報になり得るものとして扱い、独自のアクセス制御と保存期間の管理を適用してください。

コーディングエージェントがアクセスできる情報を減らすにはどうすればよいですか?

タスクに必要なファイルだけを提供し、可能な場合は範囲を限定したワークスペースを使い、ツールポリシーと機能を確認してください。不要なツールは無効にします。個々のツールが実際にどのような作用をするかは、実装によって異なります。

関連記事