セキュリティ
ユーザーのソースコードと開発環境を安全に保つことは、私たちにとって重要な最優先事項のひとつです。このページでは、Cursor におけるセキュリティへの取り組みについて説明します。
潜在的な脆弱性を発見された場合は、security-reports@cursor.com 宛にメールでご報告ください。
セキュリティに関するご質問がある場合は、security@cursor.com までお気軽にお問い合わせください。
すでに複数の大規模組織に Cursor を信頼してご利用いただいていますが、私たちは現在もプロダクトの成長とセキュリティ体制の強化に継続的に取り組んでいる途上にあります。機密性の非常に高い環境でお仕事をされている場合は、Cursor(および他のあらゆる AI ツール)をご利用の際に十分ご注意ください。このページが、私たちの取り組み状況の理解に役立ち、適切なリスク評価を行う一助となれば幸いです。
認証と第三者評価
Cursor は SOC 2 Type II 認証を取得しています。レポートのコピーをご希望の方は、trust.cursor.com にアクセスしてください。
私たちは、信頼できる第三者機関による、少なくとも年に 1 回のペネトレーションテストの実施を約束しています。最新レポートのエグゼクティブサマリーをご希望の方は、trust.cursor.com にアクセスしてください。
インフラストラクチャのセキュリティ
私たちは以下のサブプロセッサーを利用しており、おおよそ重要度の高い順に並べています。コードデータは、Cursor のすべての AI 機能を提供するために当社サーバーに送信される点にご留意ください(AI リクエストのセクションを参照)。また、プライバシーモード(レガシー)のユーザーのコードデータが保存されることは決してありません(プライバシーモード保証セクションを参照)。
各モードが、データの送信および保存方法にどのような影響を与えるかをご確認ください。
- AWS: Our infrastructure is primarily hosted on AWS, with all servers located in the US.
- Cloudflare: We use Cloudflare as a reverse proxy in front of parts of our API and website in order to improve performance and security.
- Microsoft Azure: Some secondary infrastructure is hosted on Microsoft Azure. All of our Azure servers are in the US.
- Google Cloud Platform (GCP): Some secondary infrastructure is hosted on Google Cloud Platform (GCP). All of our GCP servers are in the US.
- Fireworks: Our custom models are hosted with Fireworks, on servers in the US, Europe, or Japan. We have a zero data retention agreement with Fireworks for users in Privacy Mode and Privacy Mode (Legacy). For Share Data users, Fireworks may temporarily access and store model inputs and outputs to improve our inference performance, for the minimum duration required to perform such tasks, after which it is securely deleted. Fireworks does not reuse the data for any other purpose.
- Baseten: Our custom models are hosted with Baseten, on servers in the US and Canada. We have a zero data retention agreement with Baseten for users in Privacy Mode and Privacy Mode (Legacy). For Share Data users, Baseten may temporarily access and store model inputs and outputs to improve our inference performance, for the minimum duration required to perform such tasks, after which it is securely deleted. Baseten does not reuse the data for any other purpose.
- Together: Our custom models are hosted with Together, on servers in the US. We have a zero data retention agreement with Together for users in Privacy Mode and Privacy Mode (Legacy). For Share Data users, Together may temporarily access and store model inputs and outputs to improve our inference performance, for the minimum duration required to perform such tasks, after which it is securely deleted. Together does not reuse the data for any other purpose.
- OpenAI: We rely on OpenAI's models to provide AI responses. In Privacy Mode and Privacy Mode (Legacy), we have a zero data retention agreement with OpenAI. Additionally, requests may be sent to OpenAI for certain background or summarization tasks with zero data retention, regardless of which model provider you have selected*. For users that created their account after October 15, 2025, in Share Data mode, prompts and limited telemetry may also be shared with OpenAI when directly using their models.
- Anthropic: We rely on many of Anthropic's models to give AI responses. Additionally, requests may be sent to Anthropic for certain background or summarization tasks with zero data retention, regardless of which model provider you have selected*. We have a zero data retention agreement with Anthropic.
- Google Cloud Vertex API: We rely on some Gemini models offered over Google Cloud's Vertex API to give AI responses. Requests may be sent to Google Cloud Vertex API for certain background or summarization tasks with zero data retention, regardless of which model provider you have selected*. We have a zero data retention agreement with Vertex.
- xAI: We rely on some Grok models offered over the xAI API to give AI responses. We have a zero data retention agreement with xAI.
- Turbopuffer: Embeddings of indexed codebases, as well as metadata associated with the embeddings (obfuscated file names), are stored with Turbopuffer on Google Cloud's servers in the US. You can read more on the Turbopuffer security page. Users can disable codebase indexing; read more about it in the Codebase Indexing section of this document.
- Exa: Used for web search functionality. Search requests are potentially derived from code data (e.g., when using "@web" in the chat, a separate language model will look at your message, conversation history and current file to determine what to search for, and Exa/SerpApi will see the resulting search query).
*Cursor はモデルのブロックリストを遵守し、ブロックリストに登録されたモデルへリクエストを送信することはありません。
当社のインフラストラクチャは中国国内には一切存在しません。私たちは中国企業をサブプロセッサーとして直接利用しておらず、当社の知る限り、当社のサブプロセッサーも同様に利用していません。
インフラストラクチャへのアクセス権は、最小権限の原則に基づいてチームメンバーに付与しています。AWS には多要素認証を必須としています。ネットワークレベルでの制御とシークレットによる制御の両方により、リソースへのアクセスを制限しています。
クライアントのセキュリティ
Cursor は、Microsoft がメンテナンスしているオープンソース版 Visual Studio Code(VS Code)のフォークです。Microsoft は GitHub のセキュリティページでセキュリティ勧告を公開しています。Cursor では、VS Code のメインラインリリース 2 回ごとに、上流の 'microsoft/vscode' コードベースを取り込んでいます。ご利用中の Cursor がどのバージョンの VS Code をベースにしているかは、アプリ内の「Cursor > About Cursor」をクリックすることで確認できます。上流の VS Code に重大度の高いセキュリティ関連パッチが出た場合は、次回のマージを待たず、その修正だけを cherry-pick して直ちにリリースします。
アプリはバックエンドと通信するために、以下のドメインへリクエストを送信します。社内プロキシの内側から利用している場合は、Cursor が正しく動作するよう、これらのドメインをホワイトリストに登録してください。
-
'api2.cursor.sh': ほとんどの API リクエストに使用されます。 -
'api3.cursor.sh': Cursor Tab リクエストに使用されます(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': 利用場所に応じて Cursor Tab リクエストに使用されます(HTTP/2 のみ)。 -
'marketplace.cursorapi.com','cursor-cdn.com','downloads.cursor.com','anysphere-binaries.s3.us-east-1.amazonaws.com': クライアントのアップデートおよび拡張機能マーケットプレイスからの拡張機能ダウンロードに使用されます。
VS Code とのセキュリティ関連の違いとして、次の 2 点があります。
-
Workspace Trust は Cursor ではデフォルトで無効になっています。Cursor の設定で
'security.workspace.trust.enabled'を'true'に設定することで有効化できます。デフォルトで無効にしているのは、Workspace Trust の「Restricted Mode」と Cursor の「Privacy Mode」が混同されやすいこと、そして Workspace Trust の信頼モデルが複雑でわかりづらいためです(たとえば、Workspace Trust を有効にしていても、悪意のある拡張機能からは保護されず、悪意のあるフォルダーからのみ保護されます)。デフォルトで有効にすべきかどうかについては、コミュニティからのフィードバックを歓迎します。 -
拡張機能のコード署名: Cursor では、マーケットプレイスからダウンロードされた拡張機能の署名検証を行っていません。VS Code は最近、この検証を行うようになりました。具体的には、
'extensions.verifySignature'設定は Cursor ではデフォルトで'false'、VS Code では'true'になっています。Cursor でこれを'true'に設定すると、拡張機能をダウンロードしようとするたびに、署名検証が失敗したというポップアップが表示されます。中期的には、拡張機能の署名検証をサポートできるようにする予定です。
AI リクエスト
機能を提供するために、Cursor は当社のサーバーに AI リクエストを送信します。これはさまざまな場面で行われます。たとえば、チャットで質問したときに AI リクエストを送信したり、Cursor Tab が提案を行えるようにキー入力ごとに AI リクエストを送信したり、コンテキストを蓄積したりバグを検出して表示するためにバックグラウンドで AI リクエストを送信することもあります。
通常、AI リクエストには、直近で閲覧したファイル、会話履歴、Language Server の情報に基づいて関連性が高いと判断されたコードの断片などのコンテキストが含まれます。これらのコードデータは AWS 上の当社インフラストラクチャに送信され、その後、適切な言語モデル推論プロバイダー(Fireworks/OpenAI/Anthropic/Google)に送られます。OpenAI 用に独自の API キーを設定画面で設定している場合でも、リクエストは必ず AWS 上の当社インフラストラクチャを経由する点にご注意ください。
現在のところ、Cursor アプリからお客様の OpenAI/Azure/Anthropic の企業向けデプロイメント環境へのダイレクトルーティングはできません。これは、プロンプト生成が当社サーバー上で行われていること、および Fireworks 上のカスタムモデルが良いユーザー体験の提供に不可欠であるためです。現時点ではセルフホスト型サーバーのデプロイオプションも提供していません。
コードベースインデックス
Cursor はコードベースをセマンティックにインデックス化できるため、すべてのコードのコンテキストを踏まえて質問に回答したり、既存の実装を参照してより良いコードを書いたりできます。コードベースインデックスはデフォルトで有効になっていますが、設定から無効化できます。
コードベースインデックス機能は次のように動作します。有効化されると、Cursor で開いたフォルダを走査し、すべてのファイルのハッシュから Merkle tree を計算します。'.gitignore' または '.cursorignore' で指定されたファイルとサブディレクトリは無視されます。Merkle tree はサーバーと同期されます。10 分ごとにハッシュの不一致をチェックし、Merkle tree を使ってどのファイルが変更されたかを特定し、それらのファイルだけをアップロードします。
サーバー側では、ファイルをチャンクに分割して埋め込みを計算し、その埋め込みを Turbopuffer に保存します。ベクトル検索結果をファイルパスでフィルタリングできるようにするため、各ベクトルごとに難読化された相対ファイルパスと、そのチャンクに対応する行範囲を保存します。また、同じコードベースを 2 回目以降にインデックスするときの高速化のため(特にチームで有用です)、チャンクのハッシュをインデックスキーとして AWS 上のキャッシュにも埋め込みを保存します。
推論時には埋め込みを計算し、Turbopuffer に最近傍探索を行わせ、難読化されたファイルパスと行範囲をクライアントに返し、クライアント側でそれらのファイルチャンクをローカルに読み込みます。その後、それらのチャンクをサーバーに送信してユーザーの質問に回答します。これは、プライバシーモードを利用しているユーザーの場合、平文のコードが弊社のサーバーや Turbopuffer に保存されないことを意味します。
補足事項:
-
コードベース内の特定のファイルを Cursor のサーバーに送信したくない、また AI リクエストに含めたくない場合は、除外すべきファイルやディレクトリを列挙した
'.cursorignore'ファイルをコードベースに追加してください。Cursor は、これらのファイルがいかなるリクエストにも含まれないよう最善を尽くします。 -
ファイルパスの難読化の詳細: パスは
'/'と'.'で分割され、各セグメントはクライアントに保存された秘密鍵と、決定的な短い 6 バイトの nonce を使って暗号化されます。これによりディレクトリ階層についての情報は一部漏洩し、nonce の衝突も発生し得ますが、多くの情報は隠蔽されます。 -
埋め込みの復元について: 学術研究では、場合によっては埋め込みを逆算できることが示されています。現在の攻撃手法は、モデルへのアクセスを持ち、短い文字列を大きなベクトルに埋め込むことに依存しており、このことから本ケースでの攻撃実行はある程度難しいと考えています。とはいえ、攻撃者が弊社のベクトルデータベースに侵入した場合、インデックスされたコードベースについて何らかの情報を得ることは十分にありえます。
-
Git リポジトリでコードベースインデックスが有効な場合、Git の履歴もインデックスします。具体的には、コミット SHA、親情報、および難読化されたファイル名(上記と同様)を保存します。同一の Git リポジトリかつ同一チームのユーザー間でこのデータ構造を共有できるようにするため、ファイル名を難読化するための秘密鍵は、直近のコミット内容のハッシュから導出されます。コミットメッセージやファイル内容、差分はインデックスされません。
-
インデックス機能は高負荷状態になることが多く、多数のリクエストが失敗する場合があります。このため、ファイルが完全にインデックスされるまでに複数回アップロードが必要になることがあります。その一例として、
'repo42.cursor.sh'へのネットワークトラフィックを確認すると、想定より多くの帯域を使用しているように見えることがあります。
プライバシーモード保証
プライバシーモードは、設定画面から、またはチーム管理者によって有効化できます。有効化されている場合、コードデータがモデルプロバイダーによって保存されたり、学習に利用されたりすることは一切ないことを保証します。プライバシーモードは誰でも(無料ユーザーでも Pro ユーザーでも)有効化できますが、チームに所属しているユーザーについては、デフォルトで強制的に有効化されています。
当社はこのプライバシーモード保証を非常に重視しています。Cursor ユーザー全体の 50% 以上がプライバシーモードを有効にしています。
当社のサーバーへの各リクエストには、ユーザーがプライバシーモードかどうかを示すブール値を含む 'x-ghost-mode' ヘッダーが付与されます。プライバシーモードのユーザーを誤って非プライバシーモードのユーザーとして扱ってしまうことを防ぐため、ヘッダーが欠落している場合は、常にユーザーはプライバシーモードであるとみなすようにしています。
当社のサーバーへのすべてのリクエストは、まずプロキシに到達し、そのプロキシがどの論理サービス(例: "chat service" や "Cursor Tab service")がそのリクエストを処理するべきかを決定します。各論理サービスには、ほぼ同一の 2 つのレプリカが存在します。1 つはプライバシーモードのリクエストを処理するレプリカで、もう 1 つは非プライバシーモードのリクエストを処理するレプリカです。プロキシは 'x-ghost-mode' ヘッダーの値を確認し、適切なレプリカにリクエストを送信します。レプリカ自体も冗長性のためにヘッダーを確認します。デフォルトでは、プライバシーモード用レプリカからのすべてのログ関数は no-op となっており、'infoUnrestricted' のようなサフィックスが付いている場合のみ例外ですが、その場合も潜在的なコードデータやプロンプトが一切付与されないよう慎重にレビューしています。バックグラウンドタスクを生成するリクエストについても同様に、プライバシーモード用と非プライバシーモード用それぞれに並列のキューとワーカーのレプリカを用意しています。この並列インフラストラクチャにより、プライバシーモード保証に対する自信を高めるとともに、偶発的なミスやバグに対する耐性を確保しています。
チームレベルでプライバシーモードを強制するために、各クライアントは 5 分ごとにサーバーへ ping を行い、そのユーザーがプライバシーモードを強制するチームに所属しているかどうかを確認します。もし所属している場合は、クライアント側のプライバシーモード設定を上書きします。クライアントによるプライバシーモード ping が何らかの理由で失敗するケースを防ぐために、サーバー側でもクリティカルパス上で、ユーザーがプライバシーモードを強制するチームに所属しているかどうかを確認し、そうであればヘッダーの値に関わらず、そのリクエストをプライバシーモードとして扱います。レイテンシに敏感なサービスでは、この値を 5 分間キャッシュし、キャッシュミスが発生した場合はユーザーがプライバシーモードであるとみなします。総合すると、ユーザーがチームに参加した場合、遅くとも参加から 5 分以内にはプライバシーモードが有効化されることが保証されます。
アカウントの削除
Settings dashboard から、いつでもアカウントを削除できます(「Advanced」をクリックし、その後「Delete Account」をクリックしてください)。これにより、インデックスされたコードベースを含む、アカウントに関連付けられたすべてのデータが削除されます。お客様のデータは 30 日以内に完全に削除されることを保証します(データ自体は即時に削除されますが、一部のデータベースやクラウドストレージには最大 30 日間のバックアップが保持されています)。
また、お客様のデータがモデル学習に使用されていた場合(その時点でプライバシーモードが有効になっていなかった場合にのみ発生します)、既存の学習済みモデルがすぐに再学習されるわけではない点にご留意ください。ただし、その後に学習される新しいモデルでは、削除済みのお客様のデータは一切使用されません。
脆弱性の開示
Cursor に脆弱性を発見したと思われる場合は、security-reports@cursor.com までご報告ください。
当社は、脆弱性に関する報告を 5 営業日以内に受領したことを通知し、可能な限り速やかに対応することをお約束します。重大なインシデントが発生した場合には、すべてのユーザーに電子メールでお知らせします。