セキュリティ

チャットにキーは入れない。裏付けのないことは言わない。

Tofuが持つものと決して持たないもの、承認後にエージェントができること、デプロイ前に安全チェックが読む内容。どれも正確に説明し、それぞれの説明のすぐ横に限界も書き添えています。

franks-kitchen / Environment variables
  • MAIL_API_KEYsecret••••Qm7xProdPreview
  • SMS_API_KEYsecret••••c9d2Prod
  • NEXT_PUBLIC_SITE_URLhttps://frankskitchen.comProdPreviewDev
  • DATABASE_URLmanaged••••••ProdPreview

Secrets are write-only — once saved, the value is hidden and never shown again.

What Tofu keeps
key
"SMS_API_KEY"
secret
true
value
null
preview
"••••c9d2"

The value went to the hosting provider, write-only.

Tofuが決して持たないもの

Tofuに決して届かないものがある。だから、そこから漏れることはない。

いちばん漏れては困る値は、その値を持つサービスの手元に残ります。ホスティングプロバイダ、GoogleまたはGitHub、DNSプロバイダ、Stripeです。

  • シークレットの値

    保存したシークレットの値

    保存した値は、書き込み専用としてホスティングプロバイダへ直接送られます。Tofuが持つのは、名前、適用範囲、伏せ字にしたプレビューだけです。ダッシュボードでもTofuでも、値を読み出すことはできません。

  • パスワード

    アカウントのパスワード

    GoogleまたはGitHubでサインインします。Tofuはパスワードを設定も保存もしないので、なくすパスワードもありません。

  • 外部サービスのキー

    貼り付けたキーやトークン

    Tofuは、サービスをつなぐためにキーやトークンを貼り付けるよう求めません。DNSをつなぐときも、プロバイダ側の画面であなたが承認するだけです。そこで生まれる認証情報は、Tofuが保管し、取り消しもTofuが行います。

  • カード番号

    カード情報

    Stripeのチェックアウトページで入力します。カード情報がTofuに届くことはありません。Tofuが保存するのは、プランとそのサブスクリプションの状態だけです。

例外は1⁠つだけ。しかも、あなたの手にあります。マネージドデータベースでは、「データベースキーを表示」は所有者だけが使える操作で、求めに応じてキーの文字列を作り直します。実行するたびに監査記録が1⁠行残ります。どのエージェントもこの操作を実行できません。データベースのパスワードを変更する機能はまだありません。

エージェントの権限

エージェントはあなたの代わりに動く。あなたが承認したときだけ。

コーディングエージェントは、テレビのアプリにサインインするときと同じやり方で接続します。エージェントがコードを表示します。あなたは、Tofuにサインインした自分のブラウザでそのコードを承認します。

コピーするセットアッププロンプトには、TofuクライアントとスキルそれぞれのサイズとSHA-256が書かれています。プロンプトは、エージェントにダウンロードした2⁠つを照合させ、どちらかが一致しなければ何も実行せずに止まるよう指示します。

Your agent

tofu · login

Approve this sign-in in your browser. The code is

7F3A-C09B-21DE

app.trytofu.ai/dashboard/agent?code=7F3A-C09B-21DE

Approve only a code your own agent printed.

Connect Claude Code (MCP)?

Check that this code matches the one in your coding agent:

7F3A-C09B-21DE

Approve this connectionMhello@trytofu.ai
  1. エージェントが承認を求める

    エージェントの中のTofuクライアントがサインイン要求を開始し、XXXX-XXXX-XXXX形式のコードを表示します。この要求は10⁠分で失効します。
  2. 照合してから承認する

    Tofuにサインインしたときと同じアドレスで承認ページを開き、自分のエージェントが表示したコードと一致したときだけ、承認してください。
  3. 7⁠日間有効

    Tofuクライアントは認証情報を、あなただけが読める形で保管し、Tofuのアドレス1⁠つだけに紐付けます。Tofuが保存するのは、そのハッシュだけです。ダッシュボードの「コーディングエージェント」ページで、いつでも取り消せます。ローカルのファイルを削除しただけでは、取り消したことになりません。

承認した接続でできること

This connection can upload your app’s source or import it from a public GitHub repository, download your app’s code into a new folder on your computer when the agent runs there, get the link that opens your app in Tofu’s builder, which you open yourself, run the safety check, deploy it — its build runs any migration step it has — once you have a hosting plan, save and remove your app’s public settings — an address, a feature flag, a key meant to be public — when the agent runs on your computer, but never a hidden value, which you type yourself in Keys & settings, create the app’s managed database, on its own or in the same call as a deploy, which Tofu runs and pays for as part of your plan, read the app’s build and runtime diagnostics, restore a previous deployment, connect, verify, release or withdraw the authorization for a domain you already own, read domain quotes and prepare a dashboard link for you to review a fresh price, agreements and payment when the agent runs on your computer — it cannot place an order or submit payment, read the stored status of domains you bought through Tofu and ask the registrar to send its confirmation email again to the registrant, without seeing your owner details or changing renewal settings, read and add DNS records on a domain you bought through Tofu, and delete one of yours — never its mail (MX) or verification (TXT) records, which stay with you, read your app’s own traffic — the first read for an app that has no counter yet issues its key — and turn that counter on or off, read whether your app is answering its visitors, and turn Tofu’s emails about it on or off, change how your app’s users sign in and how its sign-in email is sent, see who has an account in your app, add a person by email or remove one — which signs them out — choose whether anyone can sign up or only the people you add, and make the app private — only people with a link can open it — or open to everyone again, send a short message to up to ten of your app’s users, from your app’s own email address, get an invite link that lets one person into your private app — you hand the link out yourself, and the first person who opens it gets in for up to 30 days — list the links you made and turn one off again, choose who can open your app — anyone with the link, only people you list by email, or anyone with a code you share, which puts a sign-in page in front of the whole app — add or remove those people, make a new code, sign everyone out, and keep exact paths open for services like webhooks, connect your app to your own Stripe account when the agent runs on your computer — you install Tofu’s app on Stripe’s own page — then create payment links there, pass their payment events to the app or disconnect it, with the money going straight to you and nothing in its reach that moves money out of your account, set up email your app sends from its own address, pause it, give it a new key or remove it, when the agent runs on your computer — Tofu writes the app’s sending key into its settings, and nothing is sent until the app sends email itself, restore an archived database into a new one Tofu runs and pays for as part of your plan, and hand you a short-lived link to download its archive, keep a database Tofu warned you about from being archived for going unused, list your database’s daily backups and ask a person at Tofu to put it back to one, which loses what was saved after it, see which of your app’s database setup steps are done, choose whether Tofu runs them for an app, and mark one as done so it never runs, when the agent runs on your computer, delete an app — the source you uploaded is kept until you ask Tofu to erase it — or its database, with nothing kept, send Tofu’s team a problem report you approved word for word, with your app’s status attached, sign in to Tofu, read the account’s id and email address, report the plan and the account’s GitHub state, and turn automatic updates off.

It cannot buy, renew or transfer a domain, submit a payment, read domain owner details, an environment value or a database password or connection string, change your plan or billing, or import a private repository from GitHub. Those stay with you.

Your agent acts on your instructions, and Tofu tells it to ask for your agreement before any call that spends money, writes to a live service or destroys something. Tofu can’t see your conversation with it, so it can’t check that the agent asked: connect only agents and apps you trust, and disconnect any of them on the Coding agent page.

安全チェック

読んだファイルを示す。読まなかったファイルも示す。

ビルドの前に、Tofuはこれからデプロイするファイルそのものを調べます。約束する範囲は、あえて狭くとどめています。Tofuが示すのは、実際に調べたことだけです。調べていないことは示しません。

エージェントが呼び出すツール

  • detect
  • setFramework
  • scan

デプロイのたびに、危険な更新を止める

次のいずれかに当てはまると、デプロイは止まります。実際に使えるキーがコードに残っている。サインインのフォームが入力内容を別のサイトへ送信する。暗号資産ウォレットのシードフレーズ(復元用の単語列)を集めるコードがある。読み取れないファイルが1⁠つでもあれば、デプロイは止まります。チェックするのは、これからアップロードするファイルそのものです。

AIモデルではなく、ルール

アップロードされた内容を、毎回同じルールで読みます。対象は、外部に露出したサービスキー、行レベルセキュリティが無効なテーブル、誰でも書き込めるポリシー、署名を検証していないStripeのwebhookです。既知のマルウェアの特徴も見ます。自分自身をデコードして実行するコードや、ダウンロードして実行するインストールスクリプトなどです。ほかの人に害が及ぶおそれがある問題は、デプロイを止めます。止めるのは、既知のマルウェアの特徴、フィッシング、漏えいしたキーです。自分のアプリだけに影響する選択は、警告として伝えるだけで、デプロイを止めることは決してありません。たとえば、誰でも編集できるテーブルです。

すべての結果に、調べた範囲を添える

結果には、次の項目が示されます。受け取ったファイルの数、そのうち読んだファイルの数、実行したチェック、そしてどのチェックも対象にしていないリスクの一覧です。この一覧が空になることはありません。

見つけた問題には、直し方も添える

問題ごとに、どのルールで見つかったか、どのファイルか、何が問題かを示します。修正用のプロンプトも付きます。そのままコーディングエージェントに渡せます。

デプロイを止める問題がないとき、結果にはこう書かれます
No blocking finding among the checks that ran.
ファイルを1⁠つも読めなかったとき、結果にはこう書かれます
Nothing was inspected, so this is not a pass.
公開の前に

応答が返ってきたときだけ、公開する。最後に正常に動いていたバージョンは、そのまま動き続ける。

  • ヘルスチェック

    アドレスを切り替える前に確認する

    ビルドが終わると、Tofuはまずそのビルド専用のアドレスにアクセスし、応答があるかを確認します。応答が返ってきたときだけ、アプリのアドレスをそこに切り替えます。

  • ビルド失敗

    ビルドが失敗しても、公開中のバージョンは変わりません

    前のバージョンが動き続けます。ビルド中にデータベースのマイグレーションが失敗した場合も、ビルドが失敗するだけで、公開中のバージョンはそのままです。

  • 復元

    ビルドし直さずに、前のバージョンへ戻せます

    復元すると、アプリのアドレスが正常に応答している以前のバージョンに切り替わります。データは一緒に戻りません。

Tofuが何をどこに保存するか

あなたのデータの置き場所。名前で示し、推測させません。

この表はプライバシーポリシーの要約です。保存期間や削除のご依頼方法など、詳しくはプライバシーポリシーをご覧ください。

保存するもの保存場所どういう意味か
アカウントSupabaseメールアドレス、サインインに使ったサービス、そのサービスが共有する名前と写真。パスワードは保存しません。
プロジェクトとデプロイTofuの管理用データベース名前、検出されたフレームワーク、デプロイ履歴、状態、設定。これらの情報を閲覧できるのは、そのプロジェクトを所有するアカウントだけです。
預けたソースコード非公開のストレージ公開されることはありません。ビルドとデプロイに使い、削除をご依頼いただくまで保持します。
静的アプリの公開ファイルCloudflareTofuの静的ホスティング上のアプリが公開している内容です。訪問者はアプリのontofu.appのアドレスで開けます。
環境変数名前はTofu、値はVercelTofuが保存するのは、名前、スコープ、シークレットかどうかの印です。シークレットの値はホスティングサービスだけが保管します。Tofuは書き込めても、読み出すことはできません。
ビルドログとリクエストログVercelからホスティングサービスが返す直近の一定期間のログです。アーカイブではありません。
プランと請求Stripeあなたのプランとサブスクリプションの状態です。カード情報はStripeのチェックアウトページにとどまります。

アプリの訪問者。 数えるだけで、追跡はしません。

アプリの設定でTofuのアクセス解析をオンにすると、ページビューはTofu自身のエンドポイントで数えます。アクセスデータはあなたのもので、ダッシュボードに表示され、ダッシュボードからオフにできます。Tofuがこのデータを自社の目的に使うことは一切ありません。

  • 訪問者のブラウザにCookieを設定しません。
  • アプリに第三者のアクセス解析スクリプトを追加しません。
  • IPアドレスを保存しません。
  • URL全体は保存しません。クエリ文字列とフラグメントは削除し、参照元はホスト名だけを残します。
  • Do Not TrackやGlobal Privacy Controlが有効な場合、その閲覧は数えません。
  • 保存期間はデフォルトで90⁠日、長くても365⁠日です。アプリを削除すると、このデータも一緒に削除されます。
脆弱性を報告

脆弱性を見つけましたか?まずは知らせてください。

見つけた内容と再現手順をメールでお送りください。テストはご自身のアカウントとアプリだけでお願いします。公開する前に、修正する時間をください。

同じメールアドレスは/.well-known/security.txtにも公開しています。セキュリティ研究者のツールは、まずここを探します。

/.well-known/security.txt
Contact: mailto:hello@trytofu.ai
Expires: 2027-09-27T00:00:00.000Z
Preferred-Languages: en
Canonical: https://trytofu.ai/.well-known/security.txt
Policy: https://trytofu.ai/security#report

Tofuがカバーしていないこと

  • マルウェアがないという保証ではありません。 安全チェックが見るのは、既知のパターンに当てはまるかどうかだけです。意図は判断しません。アプリが動き出してから何をするか、データベースの中身、package.jsonに直接書かれた以外の依存関係は調べません。

  • より詳しい項目別のセキュリティレポートはありません。 まだ作っていません。ダッシュボードには、サンプルの検出結果ではなく、その旨を表示しています。

  • エージェントの接続は、プロジェクト単位ではなく、読み取り専用でもありません。 承認したエージェントは、あなたのアカウントで許可されているすべてのプロジェクトと操作を扱えます。使い終わったら、ダッシュボードの「コーディングエージェント」ページで接続を取り消してください。

  • チェックサムは署名ではありません。 あらかじめ固定したSHA-256で検出できるのは、ダウンロードしたファイルの不一致や破損です。信頼できるのは、Tofu自身のサイトからHTTPSで届く範囲までです。そのため、配布サーバーが侵害された場合は、チェックサムでは検出できません。

  • ログの伏せ字は、できる範囲までです。 Tofuは、表示するログから認証情報らしい文字列を取り除きます。ただし、Tofu自身が書き込み専用のシークレットの値を読み出せないため、ログに残ったすべての箇所を見つけることはできません。アプリは自分のシークレットを出力してはいけません。

  • アプリを削除しても、アップロードしたソースコードは残ります。 アーカイブは、あなたが削除を依頼するまで、Tofuの非公開ストレージに残ります。

  • アカウントは自分で削除できません。 hello@trytofu.aiまでメールしてください。ご依頼は手作業で対応し、削除できたものと、削除できなかったものをお伝えします。

  • セキュリティ認証は取得していません。 TofuはSOC 2やISO 27001の認証を受けておらず、監査レポートも公開していません。サービスがGDPRに準拠していると主張することもありません。

プロンプトを1⁠つ貼る。10⁠分でオンライン。

アプリも、データベースも、ドメインも、サインインも。いつものエージェントを使えば、約10⁠分でそろいます。

無料で始める