Holdfast

Privacy Policy

Last updated: 2026-10-12

In short

1. Who we are

Holdfast is an iPhone app for people who have decided to stop contacting an ex. It is published by an individual developer, referred to here as “the developer of Holdfast”, “we” or “us”.

The developer of Holdfast is the controller of the limited personal data described in this policy and can be reached at app.holdfast@proton.me.

2. What we do not collect

3. What stays on your iPhone

The following is kept on your device only:

It is kept in the app’s own storage, a private folder that only the app and its own widgets can read. iOS file protection encrypts these files when your iPhone has a passcode, and what you wrote cannot be read while the phone is locked. The files are included in your own device backups (iCloud Backup, or a backup to your computer) if you have backups turned on, under Apple’s terms and your settings.

The app has no server that receives any of this. We cannot see it, and we cannot recover it for you.

The widgets show your count. They never show your reasons or anything you wrote.

Export. You → Privacy → Export everything I wrote makes one text file with your count and its history, the contacts you logged, your reasons, your journal, your unsent messages, your check-ins and your conversation with the coach. Photos are not part of the file.

Delete everything. You → Privacy → Delete everything removes all of the above from the phone, including any export file the app made, after one confirmation. It cannot be undone. An export you saved or shared somewhere else is a separate copy that stays where you put it.

4. The coach: the one exception

The coach is a text conversation written by software. Nothing is sent until you agree on a screen in the app that says what is sent and where it goes, says that an AI service outside Holdfast writes the reply, and links to this policy, which names that service. If you never open the coach, or go back from that screen, nothing leaves your phone.

What is sent, over an encrypted connection (HTTPS), each time you send a message:

Your journal, your unsent messages, your check-ins, the notes on your contacts and your photos are never sent.

Where it goes. The request goes to Holdfast’s relay, a small program we run on Cloudflare (a Cloudflare Worker). The relay passes the text, with the coach’s instructions, to an AI service that writes the reply: OpenAI, through its API. The relay does not send your anonymous identifier to OpenAI.

What the relay does with it. Before returning the reply, it has the reply’s text checked by OpenAI’s moderation service, to filter out harmful output. It then returns the reply to your phone and stores no message, no reply and no reason. What it does keep is listed in section 7.

What OpenAI does with it. OpenAI processes the text to produce the reply. We ask it not to store the exchange (the API’s “store” option is off). According to OpenAI’s published policy, data sent through its API is not used to train or improve its models unless the customer opts in, and we have not opted in. OpenAI may keep requests and replies in its abuse-monitoring logs for up to 30 days, or longer where the law requires it. See OpenAI’s page on data controls in its API.

What you choose to type. What you tell the coach is up to you. It may touch on your health, your intimate life or other sensitive matters; by sending it after agreeing, you consent to its use for writing the reply. Please do not type names, addresses or phone numbers, yours or anyone else’s.

Changing your mind. You can withdraw your agreement at any time: in the coach, open the … menu → Voice and what is shared → Withdraw my agreement. Nothing more is sent until you agree again. The conversation stays on your phone unless you clear it, which you can do in the same menu. Delete everything also removes your agreement. Withdrawing does not affect what was processed before.

5. The anonymous identifier

When it first opens, the app makes a random identifier (a UUID) on your device. It is not derived from your name, your Apple account or your device. It is kept in the device Keychain, with a copy in the app’s settings storage. The app shows it under You → About → Support ID (tap to copy).

It identifies this install to two services: our relay, which uses it to count coach messages and check your plan, and RevenueCat, which manages purchases (section 6). Holdfast does not link it to a name or an Apple account. The relay turns it into a salted one-way hash at once and uses only that hash in what it stores and logs.

Delete everything does not remove this identifier (a purchase stays with your Apple account), and it can remain in the Keychain after the app is removed, so that the free coach messages and your purchases stay attached to the same install. To have the relay’s counters and the RevenueCat record deleted, write to app.holdfast@proton.me and quote your Support ID.

6. Purchases

Holdfast Plus is bought through Apple’s In-App Purchase. Apple handles the payment; Holdfast never sees your card details.

Purchases are managed with RevenueCat, which acts for us as a processor. It receives the anonymous identifier, the device’s identifier for vendor (IDFV, which iOS gives to the apps of one developer on your device), your purchase and subscription status, the App Store country, and basic device and app information (such as the app and iOS versions). The app contacts RevenueCat when it opens, to learn your plan and the current prices, whether or not you buy anything. When you use the coach, our relay asks RevenueCat whether that identifier has Plus.

7. What our relay keeps

The relay exists only for the coach. Under the salted hash, never under the identifier itself, it keeps:

Logs. The relay writes one line per request with metadata only: a request id, the salted hash, the endpoint, the status, the latency, the app version, the AI model that answered, token counts, and fixed codes for what happened (an error code, how the request was checked, which counter was used). The logs never contain what you typed, the reply, your reasons, your identifier itself, or whether a reply pointed you to crisis help.

Connection data. As with any internet service, Cloudflare, which hosts the relay, processes your IP address and standard request data to deliver and protect it. The relay itself does not record your IP address.

8. Notifications, Face ID, photos

9. Support emails and this website

If you write to us, we receive your email address and what you wrote, and use them only to answer you. If you report a reply of the coach (touch and hold the reply → Report this reply), the app opens an email to us with that reply’s text; nothing is sent unless you send that email, and it contains what you choose to send. Our mailbox is hosted by Proton. We delete support emails when they are no longer needed, and on request.

This website sets no cookies, runs no scripts and loads nothing from other sites. Its host, Cloudflare, processes your IP address and standard request data to deliver and protect it.

10. Service providers

We share data only with the providers below, only for the purposes described here.

ProviderRoleDataWhere
CloudflareHosts the relay, what it keeps (section 7) and this websiteSalted hash, counters, App Attest data, plan cache, request metadata, connection data; the coach’s text in transitGlobal network; requests are handled in a data centre near you
OpenAIWrites the coach’s replies and checks them for harmful contentWhat you typed to the coach and the rest of the request listed in section 4, without your identifierUnited States and other countries where OpenAI operates
RevenueCatPurchase management (processor)Anonymous identifier, identifier for vendor (IDFV), purchase and subscription status, App Store country, basic device and app informationUnited States
AppleApp Store, payment, App Attest, device backupsAs described in Apple’s privacy policyWorldwide
ProtonSupport mailboxEmails you send usSwitzerland and the European Economic Area

We may also disclose information when the law requires it, for example in response to a valid court order. Because we hold no names and no content, there is very little we could disclose.

11. Where data is processed

What you write stays on your phone, wherever you are. The data described in sections 4 to 7 may be processed outside your country, in particular in the United States. Where the GDPR or the UK GDPR applies, such transfers rely on the safeguards those laws provide for: an adequacy decision where one exists, or standard contractual clauses in the provider’s data processing terms.

12. How long data is kept

DataKept for
Everything on your iPhoneUntil you delete it in the app, use Delete everything, or delete the app; and in your own device backups under your settings
What you type to the coach, and its repliesNot kept by our relay. OpenAI may keep them for up to 30 days for abuse monitoring, or longer where the law requires it
Daily coach counterUntil the day ends (00:00 UTC)
Monthly coach counterUntil the calendar month ends (00:00 UTC)
Plan cacheUp to 24 hours
Free-message counter and App Attest dataAs long as the service runs, so the free messages stay correct, or until you ask us to delete them
Relay logs (metadata only)A short period set by Cloudflare’s logging service: days, not months
Purchase records at RevenueCat and AppleUnder their own retention rules
Support emailsAs long as needed to help you

13. Purposes and legal bases

We use the data above only to run the coach, to manage purchases and the free allowance, to keep the service secure and fair, and to answer you. We do not use it for advertising or profiling, we make no decisions about you by automated means that have a legal or similarly significant effect, and we do not use what you type to train AI models.

Where the GDPR or the UK GDPR applies, the legal bases are:

What stays on your iPhone is not processed by us at all: we never receive it.

14. Your rights (EEA, UK, Switzerland)

Under the GDPR, the UK GDPR and Swiss law you have the right to access your personal data, to have it corrected or erased, to restrict or object to its processing, to receive it in a portable form, and to withdraw consent at any time without affecting what was done before. For an app that holds no account, this is what that means in practice:

Write to app.holdfast@proton.me. We answer within one month, and it costs nothing. You also have the right to complain to the data protection authority where you live or work: in the UK, the Information Commissioner’s Office (ICO); in Switzerland, the FDPIC.

If you live somewhere else, the law there may give you similar rights (for example, the LGPD in Brazil). The same answers apply, and you can write to us at the same address.

15. California

This section is for California residents and uses the terms of the California Consumer Privacy Act (CCPA). We give you these rights whether or not the law applies to a developer of our size.

16. Security

No system is perfectly secure. If an incident puts your information at risk, we will act promptly and tell you and the authorities where the law requires it.

17. Children

Holdfast is not directed to children under 13, and we do not knowingly collect personal information from them. Where the law of your country sets a higher age for agreeing to the use of your data (up to 16 in parts of Europe), please do not use the coach below that age without a parent’s or guardian’s agreement. If you believe a child has used the coach, write to us and we will help delete what can be found.

18. Changes

We will update this policy when the app or its providers change, and change the date at the top. If a change needs your agreement, the app will ask for it again.

19. Contact

The developer of Holdfast
Email: app.holdfast@proton.me