Privacy Policy

Last updated: 2026-05-12

paycancel ("the Extension") is operated by UNKRYPT (a sole proprietorship organized in Japan), with Ryohei Mizuno (水野亮平) as its representative (the "Operator"). It is designed with user privacy as the highest priority. This policy explains what information the Extension handles and how. It is written to comply with the EU General Data Protection Regulation (GDPR), the UK Data Protection Act 2018, the California Consumer Privacy Act (as amended by the CPRA), and the Japanese Act on the Protection of Personal Information (APPI).

1. Design Principles

  1. No credentials collected. The Extension never receives login IDs, passwords, OAuth tokens, session cookies, or other credentials. All operations occur within the user's own browser session.
  2. Local-first by default. Detected subscriptions, cancellation history, screenshots, and browsing-derived data are stored only on the user's device (IndexedDB / chrome.storage.local).
  3. End-to-end encryption for cloud sync. When the user opts in to paycancel Encrypted Sync (PES), all data is encrypted on the device with a key derived from the user's passkey (WebAuthn PRF) before transmission. The operator stores only opaque ciphertext and cannot decrypt it.
  4. Opt-in for any contribution. Anonymous telemetry, Pioneer Mode contributions, and other forms of community participation require explicit opt-in inside the Extension and can be revoked at any time.
  5. No advertising, no cross-site tracking, no cookies.

2. Data Stored Locally on Your Device

The following data is stored within the browser. It is not transmitted to the operator or any third party unless you opt in to specific features (Sections 3–6).

DataExamplesStorage
Subscription informationservice name, amount, currency, cycle, renewal date, payment URL, cancellation URLIndexedDB
Cancellation historytimestamp, duration, dark patterns encountered, Procedure versionIndexedDB
Cancellation evidencescreenshot (PNG), SHA-256 hash, Ed25519 timestamp signatureIndexedDB
User settingsnotification preferences, telemetry consent, reminder days, locale, tierIndexedDB
Cryptographic keysEd25519 keypair for evidence integrity (private key never leaves the device)chrome.storage.local
Procedure cacheJSON fetched from CDN (public data)IndexedDB
Pro license tokensigned JWT issued by the operator (when applicable)chrome.storage.local
PES sync stateanonymous user identifier, sync version (no credentials)chrome.storage.local
PES master secret cache32-byte AES-256-GCM-encrypted master secret + non-extractable wrapping keychrome.storage.local (encrypted) + IndexedDB (wrapping key)
Visit historyper-domain visit counts (90-day rolling window, used for unused-subscription detection)IndexedDB

3. Outbound Network Requests — Default (No Opt-in Required)

DestinationPurposeInformation sent
cdn.paycancel.net/procedures/*Fetch public Procedure JSONService ID only (e.g., "netflix-jp"). No user identifier.
Stripe Checkout / Customer Portal (in a separate browser tab)Subscription billing (Pro plan only)Whatever you enter directly into Stripe's pages. The Extension does not see it.
Sentry (only if configured by the operator)Error monitoringSee Section 6

Personal information, subscription lists, visited URLs, cancellation history, and statistical summaries thereof are never transmitted by default.

4. paycancel Encrypted Sync (PES) — Opt-in End-to-End Encrypted Cloud Sync

If you choose to enable PES, the Extension synchronizes your subscription list, cancellation history, settings, and cancellation evidence across your devices through paycancel's cloud infrastructure. Every byte sent to the cloud is encrypted on your device before transmission.

4.1 Cryptographic design

4.2 What is stored on paycancel infrastructure

StorageContentEncrypted?
Supabase user_blobsMain sync payload (subscriptions, history, settings, license token)✅ AES-256-GCM
Supabase recovery_codesSHA-256 hash of a recovery code you generated. Not the recovery code itself.Hashed
Supabase evidence_blob_refsEncrypted evidence metadata (blob ID, size, SHA-256 of plaintext, R2 key)Plaintext metadata only — does not reveal evidence content
Cloudflare R2 paycancel-evidenceEncrypted evidence PNG blobs✅ AES-256-GCM
Supabase Auth (anonymous user)Anonymous Supabase user ID derived from passkey credential ID hashn/a — no email, no name, no phone

The operator does not receive or store: your email, name, phone number, IP address (beyond ephemeral routing necessity), browsing history, or the plaintext contents of any synchronized field.

4.3 Recovery codes — your responsibility

When you set up PES the Extension displays a 52-character recovery code generated entirely on your device. The operator does not retain this code, nor any value from which it can be reconstructed. If you lose access to your passkey AND lose your recovery code, the operator cannot decrypt your synced data. Store the recovery code in a password manager or printed in a safe place.

4.4 Deletion

You may disconnect PES at any time from the Extension's settings. To request server-side deletion of your ciphertext, use the "Disconnect & delete cloud data" UI option or email paycancel.net/#contact with the anonymous user ID shown in the sync panel.

5. Community Authoring & Pioneer Mode — Opt-in Contribution

The Extension's cancellation Procedures are continuously improved through anonymous contributions from users who opt in to Pioneer Mode. This section explains exactly what is shared with the operator when you opt in, and what the operator does with it.

5.1 What is sent when Pioneer Mode is on

When you successfully complete a cancellation on a supported service while Pioneer Mode is enabled, the Extension constructs an observation trace consisting of:

5.2 PII redaction

Before transmission, the trace passes through a regex-based PII filter that drops the entire trace if it detects email addresses, phone numbers, payment-card-like numbers, or UUIDs anywhere in the structural metadata. A second filter at the server boundary provides defense in depth.

5.3 k-Anonymity gating

A community trace is held in a quarantine table on the server. It is only published (as a Procedure candidate) when at least k=3 distinct anonymous contributors have submitted matching flow signatures within a 14-day window and the candidate has not received ≥2 negative quality votes. This makes it structurally impossible for a single user's submission to be visible in the resulting Procedure.

5.4 Operator-Verified Mode

A separately enabled "Operator Mode" is used by paycancel's operator on their own test browser to publish operator-verified Procedures with k=1. This mode is gated by an HMAC secret known only to the operator and is not available to end users.

5.5 Contribution license you grant

When you opt in to Pioneer Mode and your structural traces survive PII filtering and k-anonymity gating, you grant the operator a worldwide, royalty-free, irrevocable, sub-licensable license to use the structural signatures and the resulting derived Procedures for the purpose of operating, improving, and distributing the Extension and its cancellation guidance. This license covers only the anonymized derivatives — not any underlying personal data — because no personal data leaves your device.

5.6 Withdrawal

You can disable Pioneer Mode at any time. Already-submitted traces cannot be individually withdrawn because they are anonymized and bucketed; however, you can request that all traces matching your anonymous contributor ID be purged before publication by writing to paycancel.net/#contact with the contributor ID shown in the Pioneer panel.

6. Anonymous Telemetry & Error Monitoring

6.1 Failure telemetry (opt-in, off by default)

When Settings > Privacy > Contribute anonymous telemetry is enabled, the Extension reports Procedure execution failures with: Procedure ID and version, failed step ID, SHA-256 hash of the surrounding DOM (not the DOM itself), page path with query parameters removed, browser type, and occurrence timestamp. The server enforces k-anonymity (k = 50) before any failure statistic becomes visible to the operator's dashboards. IP addresses are stripped at the server boundary.

6.2 Error monitoring (Sentry)

If error monitoring is enabled in your build, unhandled JavaScript exceptions are sent to Sentry with: error message and stack trace (with chrome-extension://<id>/ origin stripped), Extension version, browser hint, and a randomly-generated event ID. The error reporter explicitly does not include user identifiers, subscription data, page contents, cookies, IP addresses, or URL query parameters.

7. Sub-Processors

Sub-processorRoleData they see
Cloudflare, Inc.CDN, R2 object storage, PagesPublic Procedure JSON; opaque ciphertext blobs
Stripe Payments Europe Ltd. and affiliatesPro subscription billingWhatever you enter into Stripe directly
Supabase Inc.Database, anonymous auth, Edge FunctionsOpaque ciphertext for PES; anonymous traces for Community Authoring
Functional Software, Inc. (Sentry)Error monitoring (only when enabled)Stack traces and error messages, with origin and IP stripped
Google LLC (Gemini API)Procedure structural extraction (operator-side pipeline only)Public Procedure HTML; never user data

8. International Data Transfers

Your encrypted ciphertext and (if you opt in) your anonymous traces may be processed on servers located outside your country of residence. We rely on Standard Contractual Clauses (SCC) and equivalent safeguards in our agreements with sub-processors. Because all user content is end-to-end encrypted before transmission, no party in the data chain (including the operator) can read the plaintext.

9. Data Retention

DataRetention
Local data (your device)Until you delete it or uninstall the Extension
PES ciphertextUntil you disconnect or request deletion
Encrypted evidence on R2Until you delete the corresponding record or disconnect
Anonymous community traces awaiting k-anonymity threshold14 days from submission; expired traces auto-purged
Aggregated failure statisticsIndefinitely (no PII)
Sentry error events90 days, then auto-purged by Sentry

10. Your Rights

EU / UK Residents (GDPR, UK GDPR)

California Residents (CCPA / CPRA)

Japan Residents (APPI)

Children

The Extension is not intended for children under 13 (16 in the EU). We do not knowingly collect personal information from such users.

11. Security

We use industry-standard encryption (AES-256-GCM, HKDF-SHA-256, Ed25519, WebAuthn) and host on infrastructure that holds SOC 2 certification (Cloudflare, Supabase). No system is perfectly secure, and the security of data on your own device depends on your operating system and account hygiene. If a security incident affects your data, we will notify you within 72 hours of becoming aware, in accordance with GDPR Article 33.

12. Changes to This Policy

We will notify you of material changes via the Extension UI before they take effect. For changes that would reduce your existing rights, we will request explicit re-consent. The "Last updated" date is authoritative.

13. Contact

14. Governing Law

For users residing in Japan, this policy is governed by Japanese law. For other users, the mandatory data-protection laws of your country of residence apply; in their absence, the law of England and Wales applies.

プライバシーポリシー

最終更新: 2026-05-12

paycancel(以下「本拡張機能」)は、UNKRYPT(日本の個人事業主、代表: 水野亮平。以下「運営者」)が運営しています。本拡張機能はユーザーのプライバシーを最優先に設計されています。本ポリシーは、本拡張機能がどのような情報を、どのように扱うかを説明します。EU 一般データ保護規則(GDPR)、英国データ保護法、カリフォルニア消費者プライバシー法(CPRA で改正後)、および日本の個人情報の保護に関する法律(個情法)に準拠して作成されています。

1. 設計原則

  1. 資格情報を一切受け取りません。 ログイン ID・パスワード・OAuth トークン・セッション Cookie 等のクレデンシャルを本拡張機能は預かりません。
  2. デフォルトはローカルファースト。 サブスク情報・解約履歴・スクリーンショット・閲覧由来データは端末内(IndexedDB / chrome.storage.local)にのみ保存します。
  3. クラウド同期は End-to-End 暗号化。 paycancel Encrypted Sync (PES) を有効化した場合、すべてのデータはユーザーのパスキー(WebAuthn PRF)から導出された鍵で端末上で暗号化されてから送信されます。運営者は復号できません。
  4. 貢献はすべてオプトイン。 匿名テレメトリ、Pioneer Mode 等は明示的なオプトインが必要で、いつでも撤回できます。
  5. 広告・サイト横断トラッキング・Cookie は一切ありません。

2. 端末内に保存される情報

以下の情報はブラウザ内に保存されます。第 3 条〜第 6 条の機能をユーザーが有効化しない限り、第三者には送信されません。

種類具体例保存先
サブスクリプション情報サービス名・金額・通貨・サイクル・更新日・決済 URL・解約導線 URLIndexedDB
解約履歴解約日時・所要時間・検出されたダークパターン・Procedure バージョンIndexedDB
解約証拠スクリーンショット PNG・SHA-256 ハッシュ・Ed25519 タイムスタンプ署名IndexedDB
ユーザー設定通知設定・テレメトリ同意・リマインダ日数・言語・現ティアIndexedDB
暗号鍵解約証拠改ざん検知用 Ed25519 鍵ペア(秘密鍵は端末外に出ません)chrome.storage.local
Procedure キャッシュCDN から取得した公開データIndexedDB
Pro ライセンストークン運営者発行の署名付き JWTchrome.storage.local
PES 同期状態匿名 user ID とバージョン番号のみchrome.storage.local
PES マスター鍵キャッシュ32 バイトのマスター秘密鍵 (AES-256-GCM 暗号化済) + 非抽出 wrapping 鍵chrome.storage.local (暗号文) + IndexedDB (wrapping 鍵)
訪問履歴ドメインごとの訪問回数(90 日ローリング・未使用検出に使用)IndexedDB

3. 外部送信される情報 — デフォルト(オプトイン不要)

宛先目的送信される情報
cdn.paycancel.net/procedures/*公開 Procedure JSON の取得サービス ID のみ。ユーザー識別子なし
Stripe Checkout / Customer Portal(別タブ・Pro 購入時のみ)サブスク課金ユーザーが Stripe に直接入力する情報
Sentry(運営者が設定した場合のみ)エラー監視第 6 条参照

個人情報、サブスクリプションリスト、訪問 URL、解約履歴、これらの統計サマリは一切送信されません。

4. paycancel Encrypted Sync (PES) — オプトイン式 End-to-End 暗号化クラウド同期

PES を有効化すると、サブスク一覧・解約履歴・設定・解約証拠が paycancel のクラウドインフラを介して端末間で同期されます。クラウドに送信される全バイトは、送信前に端末上で暗号化されます。

4.1 暗号設計

4.2 paycancel インフラ上に保存される内容

保管先内容暗号化
Supabase user_blobsメイン同期ペイロード✅ AES-256-GCM
Supabase recovery_codes復旧コードの SHA-256 ハッシュ(コード本体ではない)ハッシュ
Supabase evidence_blob_refs暗号化済 evidence のメタ(blob_id・サイズ・SHA-256・R2 キー)メタのみ平文
Cloudflare R2 paycancel-evidence暗号化済 evidence PNG✅ AES-256-GCM
Supabase Auth(匿名)パスキー credential ID ハッシュ由来の匿名 UUID該当なし — メール・氏名・電話番号なし

運営者は以下を受領も保管もしません: メール・氏名・電話番号・IP アドレス(経路上一時的なものを除く)・閲覧履歴・同期項目の平文。

4.3 復旧コード — ユーザーの責任

PES セットアップ時、本拡張機能は 52 文字の復旧コードを端末上で生成して 1 度だけ表示します。運営者はこのコードも、これを再構築できる値も一切保持しません。 パスキーと復旧コードの両方を失った場合、運営者は同期データを復号できません。復旧コードはパスワードマネージャや印刷物として安全に保管してください。

4.4 削除

設定画面の「同期解除」でいつでもローカル同期状態をクリアできます。サーバ側 ciphertext の削除は「同期解除&クラウドデータ削除」または paycancel.net/#contact までご連絡ください。

5. Community Authoring & Pioneer Mode — オプトイン式貢献

本拡張機能の解約 Procedure は、Pioneer Mode に同意したユーザーからの匿名貢献により継続的に改善されます。本セクションは、Pioneer Mode を有効化した場合に運営者と共有される内容を正確に説明します。

5.1 Pioneer Mode 有効時に送信される情報

5.2 PII リダクション

送信前に正規表現ベースの PII フィルタを通し、メール・電話番号・カード番号類似値・UUID を検出したら trace 全体を破棄します。サーバ境界でも同様のフィルタを適用します。

5.3 k-匿名性ゲート

community trace は検疫テーブルに保管され、異なる匿名貢献者から k=3 件以上の一致するフロー署名が 14 日以内に集まり、ネガティブ品質票が 2 件未満である場合のみ Procedure 候補として公開されます。

5.4 Operator-Verified Mode

運営者のみが利用する HMAC 保護付きモード。エンドユーザーには提供されません。

5.5 ユーザーが付与する貢献ライセンス

Pioneer Mode 有効時、PII フィルタと k-匿名性ゲートを通過した構造 trace に対し、本拡張機能の運営・改善・配布のために、運営者へ全世界・無償・取消不能・再許諾可能な利用権を付与します。匿名化された派生物のみが対象で、平文の個人データは端末外に出ないため対象外です。

5.6 撤回

Pioneer Mode はいつでも無効化できます。匿名化・バケット化された既送信 trace の個別撤回はできませんが、公開前であれば Pioneer パネルの貢献者 ID を paycancel.net/#contact までご連絡いただくことで該当 ID に紐づく全 trace を破棄できます。

6. 匿名テレメトリとエラー監視

6.1 失敗テレメトリ(オプトイン・デフォルト OFF)

設定 > プライバシー > 「匿名テレメトリの貢献」が有効の場合のみ、Procedure ID と version、失敗ステップ ID、周辺 DOM の SHA-256 ハッシュ、ページパス(クエリ削除)、ブラウザ種別、発生時刻が送信されます。サーバ側で k=50 集計後でなければ統計に反映されません。IP アドレスはサーバ境界で除去されます。

6.2 エラー監視(Sentry)

運営者がエラー監視を有効化したビルドでは、未捕捉の例外(オリジン・IP 除去済みのスタックトレース、拡張機能バージョン、ブラウザ種別、ランダム生成のイベント ID)が Sentry に送信されます。ユーザー識別子、サブスク情報、ページ内容、Cookie、IP、URL クエリは含めません。

7. 副処理者

副処理者役割見える情報
Cloudflare, Inc.CDN / R2 / Pages公開 Procedure JSON、ciphertext
Stripe Payments Europe Ltd. および関連会社Pro 課金ユーザーが Stripe に入力する情報
Supabase Inc.DB・匿名認証・Edge FunctionsPES の ciphertext、匿名 trace
Functional Software, Inc.(Sentry)エラー監視(有効化時のみ)スタックトレース・エラーメッセージ(オリジン/IP 除去済み)
Google LLC(Gemini API)運営側 Procedure 構造抽出公開 Procedure HTML のみ

8. 国境を越えるデータ移転

ciphertext およびオプトイン時の匿名 trace は居住国外のサーバ(主に米国・EU)で処理される可能性があります。標準契約条項(SCC)等で保護を担保しています。すべてのユーザーコンテンツは送信前に End-to-End 暗号化されているため、データチェーン上のいかなる当事者(運営者を含む)も平文を読めません。

9. データ保持期間

データ保持期間
ローカルデータ削除またはアンインストールまで
PES ciphertext同期解除または削除請求まで
R2 上の暗号化 evidenceレコード削除または同期解除まで
k-匿名性閾値待ち community trace14 日(経過後自動削除)
集計済み失敗統計無期限(PII なし)
Sentry エラーイベント90 日(自動削除)

10. ユーザーの権利

EU / UK 在住者(GDPR / UK GDPR)

カリフォルニア州在住者(CCPA / CPRA)

日本在住者(個情法)

子ども

本拡張機能は 13 歳未満(EU では 16 歳未満)の方を対象としていません。意図的に個人情報を収集しません。

11. セキュリティ

業界標準の暗号化と SOC 2 認証保持インフラを利用しています。データに影響するセキュリティインシデント認知時は GDPR 第 33 条に従い 72 時間以内に通知します。

12. ポリシーの変更

重要な変更は施行前に本拡張機能 UI でお知らせします。既存の権利を縮小する変更については明示的な再同意をお願いします。最終更新日が有効版です。

13. 連絡先

14. 準拠法

日本居住者には日本法を適用します。その他のユーザーには、居住国の強行的データ保護法令を適用し、当該法令がない場合は英国法を適用します。