インフラ・セキュリティ
私たちは以下のサブプロセッサーに依存しています。コードデータは、以下のサブプロセッサーをサポートするために当社のサーバーにアップロードされます。 カーソル すべてのAI機能 ( AIリクエスト・コンポーネント一方、プライバシーモードでは、ユーザーのコードデータは保持されない(詳細は プライバシー・モード保証 (一部)。
プライバシー・モードが有効になっている(プライバシー・モードがコード・データの送信にどのように影響するかは、クリックしてご確認ください)
- AWS コードデータを参照:私たちのインフラは主にAWSでホスティングされています。ほとんどのサーバーは米国にあり、一部のレイテンシーの影響を受けやすいサーバーはアジア(東京)とヨーロッパ(ロンドン)のAWSリージョンにあります。
- 花火 コードデータを見る: 私たちは、アメリカ、アジア(東京)、ヨーロッパ(ロンドン)にあるFireworksのサーバーでカスタムモデルをホストしています。プライバシーモードが有効でない場合、Fireworksはモデル推論を高速化するためにコードデータを保存することがあります。
- オープンAI コードデータを参照してください:我々はAIの応答を提供するためにOpenAIのモデルの多くに依存しています。Anthropicの(または他の)モデルがチャットで選択されている場合でも、リクエストはOpenAIに送信されることがあります(要約のためなど)。
- アンソロピック コードデータを参照:我々は多くのコードデータに依存している。 アンソロピック 私たちは、Anthropicとゼロデータ保持契約を結んでいます。チャットでOpenAI(または他の)モデルが選択された場合でも、リクエストはAnthropicに送信されることがあります(例:要約のため)我々はAnthropicとゼロデータ保持契約を結んでいます。
- Google Cloud Vertex API コードデータを参照:Google Cloudが提供するいくつかのコードに依存している。 ジェミニ モデルを使用して AI 応答を提供します。チャットでOpenAI(または他の)モデルが選択されている場合でも、リクエストはGoogle Cloud Vertex APIに送信されることがあります(要約のためなど)。
- ターボパファー 難読化されたコードデータの保存: インデックス化されたコードベースのエンベッディングと、エンベッディングに関連するメタデータ(難読化されたファイル名)は、米国にある Google Cloud 上の Turbopuffer に保存されます。難読化されたコードデータについての詳細は セキュリティページ 詳細はこちら。ユーザーはコードベースのインデックス作成を無効にすることができます。詳細は、この文書の コードベース索引 パート
- エクサ 歌で応える セルパピ ウェブ検索機能については、検索リクエスト(コードデータから発生する可能性があります):を参照してください。検索リクエストはコードデータから発生する可能性があります(例えば、チャットで"@web "を使用すると、別の言語モデルがメッセージ、セッション履歴、現在のドキュメントに基づいて何を検索するかを決定し、Exa/SerpApiは生成された検索クエリを参照します)。
- モンゴDB 目に見えないコードデータ:プライバシーモードを有効にしていないユーザーのために、MongoDBを使用して分析データの一部を保存しています。
- データドッグ コード・データにアクセスできない:ロギングとモニタリングにDatadogを使用しています。のように プライバシーモード保証部門 で説明されているように、プライバシーモードユーザーのログにはコードデータは含まれていない。
- データブリック コードデータへのアクセスはありません:Databricks MosaicMLを使用して、いくつかのカスタムモデルをトレーニングしています。プライバシーモデルユーザーのデータはDatabricksに渡されません。
- ファウンドリー コードデータにアクセスしない:Foundryを使用して、いくつかのカスタムモデルをトレーニングします。プライバシーモードのユーザーデータはFoundryに渡されません。
- スラック コードデータへのアクセス禁止:社内コミュニケーションツールとしてSlackを使用しています。社内チャットでは、デバッグの目的で、非公開ユーザー向けのヒントのスニペットが送信されることがあります。
- グーグル・ワークスペース コードデータへのアクセス禁止:Google Workspaceをコラボレーションに使用しています。社内メールでは、非公開ユーザー向けのヒントのスニペットがデバッグ目的で送信されることがあります。
- 松ぼっくり コードデータにアクセスできない:インデックスされたドキュメントの埋め込みとメタデータはPineconeに保存されています。現在、Turbopufferに移行中です。
- 振幅 コードデータにアクセスしない:私たちはデータ分析の一部にAmplitudeを使用しています。Amplitudeにはコードデータは保存されず、「カーソルタブ要求」の回数などのイベントデータのみが記録されます。
- ハシコープ HashiCorpのTerraformを使ってインフラを管理しています。
- ストライプ コード化されたデータにはアクセスできません。請求書の処理にはStripeを使用しています。Stripeはお客様の個人データ(名前、クレジットカード、住所)を保存します。
- ヴェルセル コードデータへのアクセス不可:サイトのデプロイにはVercelを使用しています。このサイトはコードデータにアクセスできません。
- ワークオス コードデータへのアクセスなし:認証処理にWorkOSを使用しています。workOSは、いくつかの個人データ(名前、電子メールアドレス)を保存することがあります。
当社のインフラはいずれも中国にはありません。また、当社の知る限り、当社のサブプロセッサーも中国企業を直接サブプロセッサーとして使用していません。
インフラへのアクセスを割り当てる際には最小特権の原則に従い、AWSには多要素認証を導入しています。ネットワークレベルの制御と秘密管理により、リソースへのアクセスを制限しています。
クライアント・セキュリティ
カーソルは、マイクロソフト社によって管理されているオープンソースプロジェクトです。 ビジュアル・スタジオ・コード (VSコード)というマイクロソフトの支社がある。 GitHubセキュリティページ セキュリティ情報のリリースについてVS Codeのその他のメジャー・リリースの後、私たちはアップストリームを投稿します。 'microsoft/vscode'
コード・ベースは Cursor にマージされます。アプリの "Cursor > About Cursor "をクリックすると、あなたのバージョンのCursorがベースにしているVS Codeのバージョンを見ることができます。アップストリームのVS Codeに重大なセキュリティ・パッチがある場合、次のマージの前にそのパッチを選び、すぐにリリースします。
を使用する。 ToDesktop 私たちのアプリを配布し、自動アップデートを実行するために。広く使われているいくつかのアプリケーション(例えば リニア 歌で応える クリックアップ)もこのプラットフォームを信頼している。
当社のアプリケーションは、バックエンドと通信するために以下のドメインにリクエストを送信します。エンタープライズプロキシ環境の場合、Cursorが正しく機能するようにこれらのドメインをホワイトリストに登録してください。
'api2.cursor.sh'
ほとんどの API リクエストで使用されます。'api3.cursor.sh'
カーソル タブ リクエスト用 (HTTP/2 のみ)。'repo42.cursor.sh'
コードベースのインデックス作成(HTTP/2のみ)。'api4.cursor.sh'
属'us-asia.gcpp.cursor.sh'
属'us-eu.gcpp.cursor.sh'
属'us-only.gcpp.cursor.sh'
カーソルタブのリクエストに使用されます (HTTP/2 のみ)。'marketplace.cursorapi.com'
属「cursor-cdn.com
エクステンションマーケットプレイスからエクステンションをダウンロードするために使用します。'download.todesktop.com'
アップデートのチェックとダウンロード
VS Codeと異なるセキュリティ機能として注意すべき点がある:
- ワークスペース・トラスト カーソルのデフォルトでは無効になっています。カーソルの
'セキュリティ.ワークスペース.トラスト.イネーブルド'
に設定する。真
を有効にしてください。Workspace Trustの "Restricted Mode "とCursorの "Privacy Mode "の混同を避けるためと、信頼プロパティが複雑で理解しにくい(例えば、Workspace Trustが有効になっていても、悪意のある拡張機能からは保護されず、悪意のあるフォルダからのみ保護される)ため、デフォルトでは無効になっています。Workspace Trust をデフォルトで有効にすべきかどうか、コミュニティからのフィードバックをお待ちしています。
AIリクエスト
機能を提供するために、Cursor は当社のサーバーに AI リクエストを行います。このリクエストは様々なシナリオで発生します。例えば、お客様がチャットで質問をする際にAIリクエストを送信したり、Cursorタブがお客様のために提案を行うことができるように、お客様が入力するたびにAIリクエストを送信したり、また、コンテキストを構築したり、エラーを発見してお客様に警告するために、バックグラウンドでAIリクエストを送信することもあります。
AIリクエストには通常、最近閲覧したドキュメント、ダイアログログログ、言語サーバー情報に基づく関連コードスニペットなどのコンテキスト情報が含まれています。このコードデータはAWSベースのインフラに送られ、適切な言語モデル推論プロバイダー(Fireworks/OpenAI/Anthropic/Google)に転送されます。設定で独自のOpenAI APIキーを設定しても、リクエストは常に最初にAWS上の私たちのインフラに配信されることに注意してください。
現時点では、CursorアプリからOpenAI/Azure/Anthropicのエンタープライズデプロイメントへの直接接続はまだサポートしていません。なぜなら、Cursorのビルドはサーバー上で行われ、Fireworks上のカスタムモデルは優れたユーザーエクスペリエンスを提供するために重要だからです。セルフホストサーバーデプロイメントオプションはまだ提供していません。
Cursorによって生成されたコードはすべてあなたのものです。
コードベース索引
Cursor を使用すると、コードベースに意味的にインデックスを付けることができるため、コードベース全体のコンテキストを使用して質問に答えたり、既存の実装を参照してより質の高いコードを記述したりすることが可能になります。コードベースの索引付けはデフォルトで有効になっていますが、起動プロセスや設定でオフにすることもできます。
Cursorで開いているフォルダをスキャンし、すべてのファイルのハッシュのMerkleツリーを計算します。.gitignore'
もしかしたら '.cursorignore'
Merkleツリーで指定されたファイルとサブディレクトリは無視される。その後、Merkleツリーはサーバーに同期される。10分ごとにハッシュの一致がチェックされ、Merkleツリーを使って変更されたファイルが特定され、そのファイルだけがアップロードされる。
私たちのサーバーでは、ファイルをチャンクして埋め込み、埋め込んだファイルを ターボパファー にあります。ファイルパスによるベクトル検索結果のフィルタリングを可能にするため、各ベクトルの難読化された相対ファイルパスと、チャンクに対応する行範囲を保存します。また、AWSキャッシュ内のチャンクのハッシュによって埋め込みをインデックス化し、同じコードベースを2回目にインデックス化するのが速くなるようにしています(これは特にチームにとって便利です)。
推論フェーズでは、埋め込みを計算し、Turbopufferに最近傍探索を実行させ、難読化されたファイルパスと行範囲をクライアントに返送し、クライアント上でこれらのファイルチャンクをローカルに読み込む。そして、これらのブロックをサーバーに送り返し、ユーザーの質問に答える。このため、サーバーやTurbopufferには平文のコードは一切保存されません。
いくつか注意点がある:
- たとえ
'.cursorignore'
ファイルはインデックスされないようにすることができますが、最近ファイルを閲覧し、その後チャットで質問した場合など、AIリクエストに含まれる可能性があります。私たちは'.カーソルバン'
この機能に興味がある方は、フォーラムまたは hi@cursor.com お問い合わせ - ファイルパスの難読化の詳細: パスは、以下のように渡される。
'/'
歌で応える'.'
各フラグメントを分割し、クライアントに保存されているキーと決定論的な6バイトの短い乱数を使用して暗号化する。これにより、ディレクトリ階層に関する情報が多少漏れたり、乱数の衝突が発生したりするが、ほとんどの情報は隠蔽される。 - エンベッディングの反転:学術的な研究により、場合によってはエンベッディングを反転させることが可能であることが示されている。今回の攻撃は、モデルにアクセスし、短い文字列を大きなベクターに埋め込むことに依存しているため、この文脈でこの攻撃を行うことはより困難であると考えられます。しかし、もし敵が我々のベクターデータベースに侵入した場合、彼らはインデックス化されたコードベースについてある程度の知識を持っている可能性があります。
- Git リポジトリでコードベースのインデックス化が有効になっている場合は、Git の履歴もインデックス化します。具体的には、コミットの SHA、親の情報、難読化したファイル名(上記と同じ)を保存します。同じ Git リポジトリやチーム内でデータ構造を共有できるようにするため、ファイル名の難読化のキーは直近のコミットのハッシュから導き出されます。コミットメッセージやファイルの内容や差分はインデックス化されません。
- 私たちのインデックス作成機能は通常、高負荷状態にあり、多くのリクエストが失敗することがあります。つまり、インデックスが完全に作成されるまでに、ファイルを何度もアップロードしなければならないことがあるのです。この問題の一つの現れとして
'repo42.cursor.sh'
ネットワーク・トラフィックが予想以上の帯域幅を使用することがあります。