プライバシーポリシー
最終更新:2026年7月
概要
DuckTerm(以下「本アプリ」)は、独立開発者が開発・運営する iPhone および Android 向けのモバイル SSH クライアント兼 AI Agent コンソールです。私たちはプライバシーを重視しています。本ポリシーでは、アプリがアクセスするデータ、その利用方法、およびユーザーの権利について説明します。
SSH 認証情報と秘密鍵
入力したパスワード、秘密鍵 (.pem)、パスフレーズなどの認証情報はデバイス上に保存されます——iPhone では iOS キーチェーン、Android では Android Keystore で保護された暗号化ボールトです——そしてDuckTerm のサーバーへ送信されることは決してありません。
iOS には 3 つの同期チャネルがあります。① DuckTerm のオプションの iCloud 同期(アプリ内スイッチ)は接続メタデータのみを運び、認証情報は決して含まれません。② 認証情報はキーチェーンの iCloud 同期可能な領域に保存され、システムの iCloud キーチェーンが有効な場合、Apple が同じ Apple ID のデバイス間でエンドツーエンド暗号化して複製します。③ プッシュペアリングトークン(DuckTerm プッシュ中継への認証に使う Bearer トークン)は同期可能キーチェーンに保存され、デバイス間の自動ペアリングのために Apple の iCloud キー値ストレージにもミラーリングされます——このチャネルはアプリ内の同期スイッチの影響を受けません。①と②の SSH 認証情報やメタデータを当社が読むことはできません。③のペアリングトークンは設計上異なります: すべてのプッシュリクエストとともに DuckTerm 中継へ送信され、中継は認証のために検証するだけで、それ以外の用途には使いません。
Android で Google Drive 同期を有効にすると、パスワード、鍵、踏み台/プロキシの認証情報を含む完全な接続プロファイルが、Google アカウントのプライベートな Drive appDataFolder に保存されます。Google がそのファイルを転送中と保存時に保護します。オプションの DuckTerm 管理の認証情報フィールド暗号化は、初期設定でオフです。有効にすると、データ暗号化鍵で認証情報の秘密フィールドを暗号化します。生の鍵は Android Keystore で保護されたローカルストレージに残り、パスフレーズでラップした復旧用の複製が Drive に保存されます。プロファイルメタデータ、スニペット、選択された設定、ショートカット、テーマは、どちらの場合もボールトファイル内で平文のままです。認証情報の暗号化がオフの場合は、有効な DuckTerm の Drive アクセス権を保持する者が秘密フィールドも読み取れます。appDataFolder は通常の Drive 画面には表示されません。
サーバー一覧、ワークスペース、スニペット
保存したサーバー、ワークスペース、スニペット、ショートカットはローカルに保存されます。設定で同期を有効にした場合、iOS の iCloud(CloudKit) は、ホスト、ポート、ユーザー名、踏み台/プロキシ構成、起動コマンドを含むサーバーメタデータとワークスペースを運びます。スニペット、ショートカット、パスワード、秘密鍵は含みません。認証情報は前述のとおり iCloud Keychain を使います。Android のプライベートな Google Drive appDataFolder ボールトは、完全な接続プロファイル、単独の SSH 鍵、スニペット、選択された設定、カスタムショートカット、テーマを運びます。iCloud と Drive は相互に同期しません。当社はこれらのデータ用に別のプロファイル同期サーバーを運営していません。
SSH、Mosh、SFTP の通信
SSH、Mosh、SFTP セッションは、スマートフォンまたはタブレットから指定したホストへ直接接続します。当社が通信を中継、復号、保存することはありません。HTTP/SOCKS5 プロキシや ProxyJump 踏み台を設定した場合も、その経路はユーザーが管理し、DuckTerm は設定された経路にのみパケットを送ります。
プッシュ中継と対話型 Agent トラフィック
オプションの Pro 機能(Agent 受信トレイ、完了通知)は、iOS では Apple Push Notification service(APN)、Android では Firebase Cloud Messaging(FCM)を利用してプッシュを配信します。イベント種別、セッション名、タイトル、Agent の動作から生成された短い本文プレビューがプッシュ中継を通り、配信と重複排除のためペアリング ID をキーに保持されます。通知内容は、中継で受信してから約 60〜65 分後に削除される予定です。クリーンアップは 5 分ごととサービス起動時に実行されます。ロック画面の Live Activity(iOS のみの機能)では、セッションをフォローしている間、現在のタスク状態(プロンプト要約と最後の出力行)を保持します。フォローを止めると約 1 分以内に内容を消去し、すべてのタスク状態を最終イベントから約 24 時間後に削除します。これらは通知配信だけに使用し、広告、プロファイリング、転売には使用しません。
中継は、アプリとペアリング済みデーモンの間の対話型トラフィックも運びます。これには、承認と AskUser への回答、テキスト返信、Live Preview のフォールバック、画像のフォールバック、および選択した場合に限り実験的な ChatGPT 音声の音声データが含まれます。Live Preview と画像のバイト列は、利用できる場合 LAN/P2P を優先し、P2P が TURN を使うこともあります。中継は返信、画像、音声の内容を通過中に転送し、その平文を通知イベントデータベースには保存しません。ペイロードのハッシュと、ペアリング済みデバイスの重複配信防止・運用に必要なルーティング/配信メタデータは別に保存され、通知内容の 1 時間保持ルールは適用されません。
受信トレイとスナップショット(デバイス内)
配信後、正本となる受信トレイレコードと tmux スナップショットはデバイス上に保存されますが、転送には前述の中継経路を使う場合があります。無料版の受信トレイ保持期間は 30 日、Pro は無期限です。設定から個別項目または受信トレイ全体をいつでも削除できます。
音声入力
既定の音声入力(Mic / Wispr)はプラットフォームのシステム音声認識——iOS では Apple Speech フレームワーク、Android ではデバイスの音声認識エンジン——を使用します。プラットフォーム、デバイス、インストール済みの言語パックによって、音声はオンデバイスで処理される場合と、プラットフォーム提供元の音声サービスによってネットワーク経由で処理される場合があります。対応環境では、デバイス設定でオンデバイス認識を必須にできます。システム認識を使う場合、DuckTerm 自体があなたの音声を録音、保存、受信することはありません。
オプションとして実験的な ChatGPT 音声プロバイダーも利用できます。これを選択すると、DuckTerm はデバイス上で一時的な音声クリップを録音し、DuckTerm の中継を通じてペアリング済みの開発マシンへ送信します。開発マシンはそれを文字起こしのために ChatGPT(OpenAI)へ送信します。クリップはその文字起こしのためだけに使われます。一時ファイルはアップロード後に削除され、中継は音声を保存せず一時的に扱うだけです。OpenAI は自社の規約に基づいて処理します。音声を DuckTerm の中継や OpenAI に送信したくない場合は、既定のシステム認識をお使いください——システム認識自体がネットワーク経由で処理されるかどうかは、プラットフォーム・デバイス・言語パックによって異なります。OpenAI の取り扱いは openai.com/policies/privacy-policy をご覧ください。
クラッシュレポート(Sentry)
匿名のクラッシュレポートとパフォーマンスデータの収集に Sentry を使用しています。これは不具合の特定と修正に役立ちます。レポートには次の情報が含まれる場合があります。
- デバイスモデルと OS バージョン
- アプリのバージョンとビルド番号
- クラッシュ時のスタックトレース
- 基本的なパフォーマンス指標
クラッシュレポートに SSH 認証情報、パスワード、秘密鍵、ターミナルバッファが含まれることはありません。再現に必要な診断情報として、サーバーのホスト名とポート、通知タイトルなど、認証情報ではないメタデータが含まれる場合があります。認証トークンやパスワードなどの機密フィールドは送信前に自動で除去されます。設定からクラッシュレポートを無効にできます。
広告・追跡なし
DuckTerm に広告 SDK やアプリ横断トラッカーは含まれません。第三者サービスは、無効化できる Sentry のクラッシュレポート、RevenueCat(購入処理とその標準的な購入分析)、そして——オプションの ChatGPT 音声プロバイダーを選択した場合に限り——文字起こしのために音声クリップを受け取る OpenAI です。当社がお客様のデータを販売したり、広告に利用したり、アプリ横断トラッキングのために共有したりすることはありません。
アプリ内課金
Pro サブスクリプションと買い切りは、購入したストア——iOS では Apple App Store、Android では Google Play——が処理します。当社が支払い情報を受領または保存することはありません。購入権利の検証は RevenueCat が当社に代わって購入レシートとサブスクリプション状態を処理します。
データの削除
アプリ内でサーバーや保存済みの鍵を削除すると、対応する認証情報がキーチェーン / Keystore ボールトから削除されます。アプリをアンインストールするとローカルのデータベースとファイルが削除されますが、iOS ではシステムの挙動によりキーチェーンの項目が残ることがあります(iCloud キーチェーンが有効なら iCloud にも残ります)。認証情報を完全に消したい場合は、先にアプリ内でサーバーを削除してください。クラウド側のデータは元の場所で削除する必要があります。iOS では iCloud Drive の設定から DuckTerm コンテナを削除し、Android では Google Drive のウェブサイト → 設定 → 「アプリの管理」を開いて DuckTerm の非表示アプリデータを削除してください。同期をオフにしたり Drive の接続を解除したりしても、リモートのボールトは削除されません。
子どものプライバシー
DuckTerm は13歳未満の子どもを対象としておらず、子どもの個人情報を意図的に収集することはありません。
ポリシーの変更
本プライバシーポリシーは随時更新される場合があります。変更時は改定日とともにこのページに掲載します。
お問い合わせ
本ポリシーについてご質問がある場合は、[email protected] までご連絡ください。