Privacy Policy
Last Updated: March 21, 2026
Overview
Nudge ("we", "our", or "the App") is committed to protecting your
privacy. This Privacy Policy explains how we handle your information
when you use our AI coding tool approval application.
Privacy First: Nudge does not collect any personally
identifiable information. Authentication uses anonymous Firebase
accounts with no email, name, or password required. All sensitive event
data (tool input, description, working directory) is end-to-end
encrypted (AES-256-GCM) — our servers store only ciphertext and cannot
read your data. Additionally, common credential patterns (Bearer tokens,
API keys, passwords) are automatically redacted before encryption.
Information We Collect
1. Anonymous Authentication Data
-
What: An anonymous Firebase Authentication user ID
-
How: Created automatically when you pair your device
with a CLI tool
-
Purpose: To link your mobile device with your AI
coding tool session
-
PII: None — no email, name, phone
number, or password is collected
2. Device Token (FCM)
-
What: A Firebase Cloud Messaging registration token
-
How: Generated by Firebase when you grant
notification permissions
-
Purpose: To deliver push notifications to your device
-
Storage: Stored server-side in Firestore, associated
with your anonymous user ID
-
Rotation: Automatically rotated on app reinstall;
invalid tokens are cleaned up
3. Approval Event Data
-
What: Tool name, provider name (e.g., "Claude Code"),
event description, tool input (e.g., shell commands for Bash), working
directory path, and your approval/denial response
-
How: Sent by the CLI plugin when your AI coding tool
requests permission
-
Purpose: To display the approval request and deliver
your response back to the CLI
-
Storage: Stored in Firebase Realtime Database with a
24-hour TTL (auto-deleted). After you respond, the TTL is shortened to
1 hour to minimize the data exposure window. Sensitive fields (tool
input, description, working directory) are end-to-end encrypted
(AES-256-GCM) using a shared key established during pairing — our
servers store only ciphertext and cannot decrypt your data.
Additionally, all data is encrypted at rest by Google Cloud (AES-256)
and in transit (TLS 1.3).
-
Credential redaction: Before encryption and
transmission, the CLI plugin automatically redacts common credential
patterns (Bearer tokens, API keys, AWS keys,
--password flags) from command strings, replacing them
with [REDACTED]. Large code blocks (file content, diffs)
are truncated to 2,000 characters.
-
Note: Working directory paths may contain your system
username (e.g.,
/Users/yourname/project).
4. Subscription Data
-
What: Subscription status (free/pro) and expiry date
-
How: Managed by RevenueCat through Apple's App Store
-
Purpose: To determine feature access (daily event cap
for free users, unlimited for Pro)
-
Payment data: We never see or store credit card
details — Apple handles all payment processing
5. Stable Device Identifier
-
What: A randomly generated device identifier stored
locally on your device
-
How: Generated once at first launch and persisted in
device Secure Store
-
Purpose: To track daily event usage for the free plan
cap (30 events/day). This identifier survives re-pairing to prevent
cap circumvention.
-
PII: None — this is a random UUID,
not linked to any hardware identifier or personal information
Data We Do NOT Collect
- Personal identification information (name, email, phone number)
-
Full source code files or complete repository contents — tool inputs
containing code snippets (e.g., file edits, diffs) are truncated to
2,000 characters before transmission and auto-deleted after 24 hours
-
Raw credentials or secrets — these are automatically redacted from
commands before transmission
- Device identifiers for tracking or advertising
- Location data
- Contacts or other personal data
- Usage analytics or crash reports (MVP)
- Browsing history or app usage patterns
How We Protect Your Data
Communication Security
- All communication uses HTTPS with TLS 1.3
-
CLI-side tokens are stored in
~/.nudge/config with file
permission 600 (owner read/write only)
- Mobile-side tokens are stored in device Secure Store
End-to-End Encryption
-
Sensitive event fields (tool input, description, working directory,
session name) are encrypted client-side using
AES-256-GCM before being sent to our servers
-
The encryption key is derived during device pairing using PBKDF2
(600,000 iterations) and shared only between your CLI and mobile
device
-
Our servers store and relay only ciphertext — we cannot read your
data, even if compelled
-
Push notification payloads include a compact encrypted blob that is
decrypted on-device by iOS Notification Service Extension before
display
Push Notification Security
-
Push notification payloads contain unencrypted metadata (tool name,
event type) for notification routing, plus an encrypted blob for
display content
-
The encrypted blob is decrypted on-device before the notification is
shown to you — Apple/Google servers see only ciphertext
-
Payload size is limited to 4KB (FCM/APNs limit), with automatic
truncation of large fields
Data Retention
-
Approval events (Realtime Database): Auto-deleted
after 24 hours (shortened to 1 hour after response)
-
Pairing codes: Expire after 10 minutes; one-time use
-
FCM tokens: Removed when device is unlinked or token
becomes invalid
-
User data: Deleted entirely (Firestore + Realtime
Database) when you delete your account
Third-Party Services
Firebase (Google)
RevenueCat
-
Purpose: Managing in-app purchases and subscriptions
-
Data shared: Anonymous user ID, purchase history
(managed by Apple)
-
Privacy Policy:
https://www.revenuecat.com/privacy
Apple Push Notification Service (APNs)
-
Purpose: Delivering push notifications to iOS devices
-
Data shared: Notification content (tool name,
description — no source code)
-
Privacy Policy:
https://www.apple.com/privacy/
Your Rights and Controls
You have complete control over your data:
-
View: See all approval events in the app's Events
screen
-
Unlink Device: Signs you out and disconnects your
device from the CLI. Your server-side data (anonymous user ID,
session history, pairing records) is retained so you can re-pair
later without losing context. Local credentials and cached events
are cleared from your phone.
-
Delete Account: Permanently and irreversibly deletes
your account and all associated data — including your anonymous user
profile, approval events, session history, pairing codes, and FCM
tokens — from both the server (Firestore, Realtime Database, Firebase
Auth) and your device. This action cannot be undone.
-
Revoke Permissions: Disable push notification
permissions in iOS Settings at any time
Permissions Explained
Push Notifications (Required)
-
Purpose: To receive approval requests from your AI
coding tools
- Scope: Alert, sound, and badge notifications
-
Note: You can revoke this permission anytime in iOS
Settings, but you will not receive approval requests
Camera Access (Optional)
- Purpose: To scan QR codes for device pairing
- Scope: Camera access only during QR scanning
-
Note: You can pair using a text code instead — camera
is not required
Children's Privacy
Nudge is a developer tool and is not intended for use by children under
13. We do not knowingly collect information from children.
Changes to This Policy
We may update this Privacy Policy from time to time. We will notify you
of any changes by:
- Updating the "Last Updated" date
- Displaying a notice in the app (for material changes)
Data Deletion
To delete all your data:
- Open the Nudge app
- Go to Settings
- Tap "Delete Account" at the bottom
-
Confirm deletion — this permanently removes your account, events,
pairing codes, and device tokens from our servers
Alternatively, uninstalling the app removes all local data. Server-side
data (anonymous user ID, events) is auto-deleted after 24 hours of
inactivity.
Contact Us
If you have questions about this Privacy Policy or your data:
Email:
app.nudge@enterx.jp
Legal Compliance
This app complies with:
- Apple App Store Review Guidelines
- General Data Protection Regulation (GDPR) principles
- California Consumer Privacy Act (CCPA) principles
- Japan's Act on the Protection of Personal Information (APPI)
Your Consent
By using Nudge, you consent to:
- This Privacy Policy
- Anonymous authentication for device pairing
- Push notification delivery for approval requests
- Storage of event data on our servers (24-hour TTL)
You can withdraw consent by:
- Deleting your account in Settings
- Unlinking your device
- Revoking notification permissions
- Deleting the app
Summary: Nudge collects no personally identifiable
information. Authentication is fully anonymous. All sensitive event data
is end-to-end encrypted (AES-256-GCM) — our servers cannot read your
data. Credentials are automatically redacted before encryption. Push
notification content is encrypted and decrypted only on your device.
Approval event data is auto-deleted after 24 hours. You can delete your
account and all data at any time from Settings.
プライバシーポリシー
最終更新日: 2026年3月16日
概要
Nudge(以下「当アプリ」)は、お客様のプライバシー保護に取り組んでいます。本プライバシーポリシーは、AIコーディングツール承認アプリケーションの利用時に、当社がお客様の情報をどのように取り扱うかを説明します。
プライバシー第一:
Nudgeは個人を特定できる情報を一切収集しません。認証にはメール、氏名、パスワード不要の匿名Firebaseアカウントを使用します。すべての機密イベントデータ(ツール入力、説明、作業ディレクトリ)はエンドツーエンド暗号化(AES-256-GCM)されています。当社のサーバーは暗号文のみを保存し、お客様のデータを読むことはできません。さらに、一般的な認証情報パターン(Bearerトークン、APIキー、パスワードフラグ等)は暗号化前に自動的にマスクされます。
収集する情報
1. 匿名認証データ
- 内容: 匿名のFirebase AuthenticationユーザーID
-
方法: CLIツールとデバイスをペアリングする際に自動作成
-
目的:
モバイルデバイスとAIコーディングツールセッションの紐付け
-
個人情報: なし —
メール、氏名、電話番号、パスワードは収集しません
2. デバイストークン(FCM)
- 内容: Firebase Cloud Messaging登録トークン
- 方法: 通知許可を付与した際にFirebaseが生成
- 目的: デバイスへのプッシュ通知の配信
-
保存:
Firestoreにサーバー側で保存、匿名ユーザーIDに関連付け
-
更新:
アプリ再インストール時に自動更新、無効なトークンは自動削除
3. 承認イベントデータ
-
内容: ツール名、プロバイダー名(例:「Claude
Code」)、イベント説明、ツール入力(例:Bashツールのシェルコマンド)、作業ディレクトリパス、承認/拒否の回答
-
方法:
AIコーディングツールが許可を要求した際にCLIプラグインから送信
- 目的: 承認リクエストの表示とCLIへの回答の配信
-
保存: Firebase Realtime
Databaseに24時間のTTL(自動削除)で保存。回答後はTTLが1時間に短縮され、データ露出期間を最小化します。機密フィールド(ツール入力、説明、作業ディレクトリ)はペアリング時に確立された共有鍵を用いてエンドツーエンド暗号化(AES-256-GCM)されています。当社のサーバーは暗号文のみを保存し、復号できません。加えて、すべてのデータはGoogle
Cloud(AES-256)により保存時に暗号化され、通信時はTLS
1.3で暗号化されます。
-
認証情報のマスク処理:
暗号化・送信前に、CLIプラグインがコマンド文字列から一般的な認証情報パターン(Bearerトークン、APIキー、AWSキー、
--passwordフラグ等)を自動的に[REDACTED]に置換します。大きなコードブロック(ファイル内容、差分等)は2,000文字に切り詰められます。
-
注記:
作業ディレクトリパスにはシステムのユーザー名が含まれる場合があります(例:
/Users/yourname/project)。
4. サブスクリプションデータ
-
内容: サブスクリプション状態(無料/Pro)と有効期限
- 方法: AppleのApp Storeを通じてRevenueCatが管理
-
目的:
機能アクセスの決定(無料ユーザーのデイリーイベントキャップ、Proは無制限)
-
決済データ:
クレジットカード情報は一切閲覧・保存しません —
Appleが全ての決済処理を行います
5. 安定デバイス識別子
-
内容:
デバイスにローカル保存されるランダム生成の識別子
-
方法: 初回起動時に一度だけ生成され、デバイスのSecure
Storeに保持
-
目的:
無料プランのデイリーイベント使用量(30イベント/日)の追跡。この識別子は再ペアリング後も維持され、キャップの回避を防止します。
-
個人情報: なし —
ランダムなUUIDであり、ハードウェア識別子や個人情報とは紐づきません
収集しないデータ
- 個人識別情報(氏名、メールアドレス、電話番号)
-
完全なソースコードファイルやリポジトリの全内容 —
コードの断片を含むツール入力(ファイル編集、差分等)は送信前に2,000文字に切り詰められ、24時間後に自動削除されます
-
生の認証情報やシークレット —
コマンドから送信前に自動的にマスク処理されます
- トラッキングや広告のためのデバイス識別子
- 位置情報データ
- 連絡先やその他の個人データ
- 使用分析やクラッシュレポート(MVP)
- 閲覧履歴やアプリ使用パターン
データの保護方法
通信セキュリティ
- すべての通信はHTTPS(TLS 1.3)を使用
-
CLI側のトークンは
~/.nudge/configにファイルパーミッション600(所有者のみ読み書き可)で保存
- モバイル側のトークンはデバイスのSecure Storeに保存
エンドツーエンド暗号化
-
機密イベントフィールド(ツール入力、説明、作業ディレクトリ、セッション名)は、サーバーへ送信される前にクライアント側でAES-256-GCMを使用して暗号化されます
-
暗号化鍵はデバイスペアリング時にPBKDF2(600,000回反復)を用いて導出され、CLIとモバイルデバイス間でのみ共有されます
-
当社のサーバーは暗号文の保存と中継のみを行います —
たとえ強制された場合でも、お客様のデータを読むことはできません
-
プッシュ通知ペイロードには、iOS Notification Service
Extensionによりデバイス上で復号されるコンパクトな暗号化ブロブが含まれます
プッシュ通知のセキュリティ
-
プッシュ通知ペイロードには、通知ルーティング用の非暗号化メタデータ(ツール名、イベントタイプ)と、表示コンテンツ用の暗号化ブロブが含まれます
-
暗号化ブロブは通知の表示前にデバイス上で復号されます —
Apple/Googleのサーバーには暗号文のみが見えます
-
ペイロードサイズは4KB(FCM/APNs制限)に制限、大きなフィールドは自動切り詰め
データ保持
-
承認イベント(Realtime Database):
24時間後に自動削除(回答後は1時間に短縮)
-
ペアリングコード: 10分後に期限切れ、一度限りの使用
-
FCMトークン:
デバイスのリンク解除時またはトークン無効時に削除
-
ユーザーデータ:
アカウント削除時にFirestoreおよびRealtime
Databaseのデータをすべて完全削除
サードパーティサービス
Firebase(Google)
RevenueCat
Apple Push Notification Service(APNs)
お客様の権利と管理
お客様はデータを完全に管理できます:
-
閲覧:
アプリのイベント画面ですべての承認イベントを確認
- リンク解除: 設定からデバイスとCLIの接続を解除
-
アカウント削除:
設定からアカウントと関連データ(ユーザープロフィール、イベント、ペアリングコード)を完全削除
-
許可の取り消し:
iOS設定でプッシュ通知の許可をいつでも取り消し可能
許可の説明
プッシュ通知(必須)
-
目的:
AIコーディングツールからの承認リクエストを受信するため
- 範囲: アラート、サウンド、バッジ通知
-
注記:
iOS設定でいつでもこの許可を取り消せますが、承認リクエストを受信できなくなります
カメラアクセス(オプション)
- 目的: デバイスペアリング用のQRコードスキャン
- 範囲: QRスキャン中のみカメラアクセス
-
注記: テキストコードでもペアリング可能 —
カメラは必須ではありません
子供のプライバシー
Nudgeは開発者向けツールであり、13歳未満の子供による使用を意図していません。子供から意図的に情報を収集することはありません。
本ポリシーの変更
本プライバシーポリシーは随時更新される場合があります。変更がある場合は以下の方法でお知らせします:
- 「最終更新日」の日付を更新
- 重要な変更の場合はアプリ内で通知を表示
データの削除
すべてのデータを削除するには:
- Nudgeアプリを開く
- 設定画面に移動
- 下部の「アカウントを削除」をタップ
-
削除を確認 —
アカウント、イベント、ペアリングコード、デバイストークンがサーバーから完全に削除されます
アプリのアンインストールでもローカルデータはすべて削除されます。サーバー側のデータ(匿名ユーザーID、イベント)は非アクティブ状態から24時間後に自動削除されます。
お問い合わせ
本プライバシーポリシーまたはお客様のデータに関してご質問がある場合:
メール:
app.nudge@enterx.jp
法的遵守
本アプリは以下を遵守します:
- Apple App Storeレビューガイドライン
- 一般データ保護規則(GDPR)の原則
- カリフォルニア消費者プライバシー法(CCPA)の原則
- 個人情報の保護に関する法律(日本)
お客様の同意
Nudgeを使用することにより、以下に同意したものとみなされます:
- 本プライバシーポリシー
- デバイスペアリングのための匿名認証
- 承認リクエストのためのプッシュ通知配信
- サーバーでのイベントデータ保存(24時間TTL)
以下の方法で同意を撤回できます:
- 設定からアカウントを削除
- デバイスのリンクを解除
- 通知許可を取り消し
- アプリを削除
要約:
Nudgeは個人を特定できる情報を一切収集しません。認証は完全に匿名です。すべての機密イベントデータはエンドツーエンド暗号化(AES-256-GCM)され、当社のサーバーはお客様のデータを読むことができません。認証情報は暗号化前に自動マスクされます。プッシュ通知コンテンツはデバイス上でのみ復号されます。承認イベントデータは24時間後に自動削除されます。設定からいつでもアカウントと全データを削除できます。