Condition One Privacy Policy
Effective date: 18 October 2026 App: Condition One for iPhone ("the app"). The App Store listing name is "Condition One: News Alerts". Who runs it: Condition One is run by Code Annex. Contact: conditiononenews@thecodeannex.com
The short version
- You don't create an account. The app doesn't ask for your name, email, phone number, contacts, photos, or location.
- Your settings, the stories you save, and the last copy of the news feed are stored on your iPhone.
- There are no ads, no advertising or analytics tools, and no tracking across other apps or websites.
- Code Annex never sells your data, and does not share it for advertising.
- Code Annex's stories server is hosted on Oracle Cloud, US West (Phoenix), at
https://conditionone.thecodeannex.com. Older versions of the app reach the same server athttps://129-146-112-213.sslip.io. - If you turn on breaking alerts, a morning or evening brief, or follow a story, that server stores an Expo push token, your alert choices, your time zone, and a record of the alerts it sent you, only to send the alerts and briefs you asked for (section 3). They are deleted when you turn all of those off, or when Apple or Expo says the token no longer works.
- When the app hits a software error, it sends Code Annex an error report: what went wrong and where in the app, the app version, the iOS version, the iPhone model, and a scrambled form of a random code the app made up. Error reports are used only to fix bugs and are deleted after 14 days (section 6).
- If you use Report a problem on a story, the server stores what you chose, your optional note, and the same kind of scrambled code, so each phone can report a story once. Reports are deleted after 90 days (section 4).
- If you use Request an X account, the server stores the accounts you suggest, what you say they cover, whether you said one is yours (if so, that X username can identify you), and a scrambled code, so each phone counts once per account. Requests are deleted after a year (section 4).
- If you open a story or tap a reaction, the server stores only a scrambled form of a random install code, so each phone is counted once. Read counts show only from 10 people up. They are not linked to your Apple Account or push token (section 5).
- Like any website, the server's front door keeps access logs (IP address, time, the address requested, which can include your search words, and the app and iOS version) for 7 days, for security (section 2).
- Expo, the company whose tools the app is built with, delivers app updates and relays notifications. It receives the technical data described in section 8.
1. What stays on your iPhone
Your topic, region, and company choices; whether you hide state-run or government-funded media; the confirmation level your feed shows; your muted words; the people, places, and searches you follow; the stories you follow for change alerts; the stories you muted and any alert snooze; the language you chose for article warnings (or “match this phone”); the stories you save; which stories you opened and when you last used the app (so the feed can show unread and new stories); a random install code in the app's own storage (used so each phone can send one report, one read, and one reaction per story, and to count error reports per phone); quiet-hours, brief, and alert switches; and the last news feed the app downloaded (so it can show something when you're offline). Expo's update and notification libraries also keep their own random codes on the phone (section 8). Deleting the app deletes all of these, with one exception: if you ever turned on alerts, a brief, or a story follow, Expo's notification library keeps its random installation code in the iPhone's keychain, which iOS can keep after an app is deleted. That code is sent nowhere unless you reinstall the app and turn one of those on again (section 8). Versions of the app before 15 October 2026 also kept a copy of the install code in the keychain; the app deletes that copy the next time it opens. iCloud backups may include these under Apple's privacy policy.
Company tags are not sent to the server. Muted words, followed people, places, and searches, stories you follow, mute, and save, your feed regions and topics, and the brief times are sent only if you turn on breaking alerts, a brief, or follow a story, as described in section 3.
2. What Code Annex's server sees when the app loads news
To show the news, the app downloads stories, the list of sources, trends, and ship incidents from Code Annex's server at https://conditionone.thecodeannex.com (Oracle Cloud, US West, Phoenix); older versions of the app reach the same server at https://129-146-112-213.sslip.io. The Home Screen and Lock Screen widgets download the newest three stories the same way. Each request includes only what the app needs to answer it: how many stories to send, sort order, which story, and whether you hide state-run or government-funded media. When you use Search, the request includes the words you typed; the server program answers and does not store them (the front-door log below does record the request). The App Store version has no Commodities tab. These requests do not include your name, Apple Account, or a stable identifier.
Like any website, the server receives your IP address when the app connects. The app's server program does not write IP addresses to disk. To limit abuse it keeps short-lived counts of request IP addresses in memory only, for these requests: alert settings (30 per 10 minutes), Report a problem and Request an X account (10 an hour each, also counted per phone code), reads and reactions (30 per 10 minutes per IP address, 60 per phone code), and error reports (30 an hour). Those counts are discarded when the window ends or the server restarts. They are not used to identify you.
Access logs. The https front door on the Oracle Cloud machine logs each request: the IP address, the time, the address requested (which includes any search words and the code of the story opened), the response, and the app name, app build, and iOS version that iPhone apps send with every request. It does not log push tokens, install codes, notes, or anything else sent inside a request. How long: 7 days, only to keep the service secure and working, unless needed longer to investigate a specific security incident. Logs are not combined with push tokens or install codes, not used to work out where you are, and not used for advertising.
Backups. The server's data files (the push records in section 3, the reports and requests in section 4, the read and reaction records in section 5, and the error reports in section 6) are backed up every night on the same server. Each backup is kept for 7 days, so something deleted from the server is gone from the backups within 7 days. When Code Annex updates the server program, the previous version of the program is kept so the update can be undone if it fails; that copy contains none of these data files, and older versions are deleted.
Ship incidents. The ship markers on the map show the public incident list of UK Maritime Trade Operations (UKMTO). Code Annex's server keeps a copy of that list, and the app downloads it only from the server above, about every 5 minutes while the map is open, like the rest of the news. The app does not contact UKMTO, so UKMTO does not receive your IP address. Versions of the app before 15 October 2026 loaded the list directly from UKMTO's website (sccd.royalnavy.mod.uk), which then received the phone's IP address and nothing else; UKMTO's own privacy notice applies to those requests.
AI editor. Code Annex's server uses an AI model (Anthropic's Claude, through Anthropic's API, with a model running on Code Annex's own server as backup) to group reports into stories, decide which stories are on topic, place war events on the map, translate headlines from other languages, and check public X posts shown as tips. It does not write summaries (since Oct 15, 2026). It receives public news headlines and public posts only, never anything about you or your device. Your notes in Report a problem are never sent to it.
3. Push notifications (only if you turn them on)
Notifications are off until you allow them. The feed, map, and story screens work fully without them. Permission is asked on a later onboarding step (or in Settings), not the moment the app first opens.
If you allow them, the app first gets this iPhone's push address from Apple and sends it to Expo, with a random installation code made by Expo's notification library and the app's id. Expo returns an Expo push token. The app then sends Code Annex's server:
- the Expo push token: a random code that lets Code Annex's server address notifications to this copy of the app on your device. It does not reveal your name, phone number, or Apple Account.
- your alert choices: which topics can ping and how important a story must be for each (critical only, major, or all), which regions can ping, the confirmation level and the number of reports an alert needs, whether alerts come right away (and your hourly and daily limits) or as an hourly or daily summary (and its time), whether quiet hours are on and the start/end hours (and separate weekend hours, if you set them), whether to skip stories that only have state-run or only government-funded sources (and which version of those two labels the app knows), your muted words, the newsrooms and X accounts you turned off in Settings → Sources, the people, places, or searches you follow with alerts on, the stories you follow (and whether you want every update or major changes only), the developing stories whose bell you turned on (their ids, at most 40), the stories you muted (up to 200), a snooze end time if you set one, whether the morning and evening briefs are on and the local times they should arrive, and, so each brief can put your stories first, your feed regions and topics and the stories you saved (up to 100).
- the time zone of this iPhone (IANA name, for example
America/Los_Angeles), so quiet hours and the briefs use your local clock.
To send what you asked for, the server keeps these records with the token:
- the stories it already alerted you about, for 14 days, so you never get the same story twice;
- the times of recent alerts, for 24 hours, so your limits work;
- a log of the notifications it sent this phone (which story, its headline and level, and when), for 7 days and at most 200, so the Alerts screen can show them;
- the stories in each brief it sent this phone (the last 10 briefs, at most six days), so the Briefs screen can show them;
- if you chose a summary, the stories waiting for your next summary, until it is sent;
- if you set quiet hours, the stories held back during them (at most 10, kept at most 18 hours), until your next brief or the summary when quiet hours end;
- for a followed story, a last-seen snapshot of that story (how serious it was, how confirmed, which countries, and how many updates) so the server can tell when it changed, until you stop following it;
- delivery receipts for recent sends, until Expo answers (at most a day), and any alert waiting to be sent again after a failed delivery.
Why: only to send the news alerts you asked for. Code Annex will not send marketing or promotional notifications unless you separately agree to them in the app, and you can turn alerts off at any time. Who else handles it: notifications are relayed through Expo's push service (Expo, by 650 Industries, Inc.), which receives the push token and the notification text in order to deliver it. Apple then delivers them through the Apple Push Notification service. How long: until you turn breaking alerts, the briefs, and story follows off in the app, or turn off notification permission (the app then unregisters the next time you open it). Unregistering deletes the token and every record listed above. If you delete the app, Code Annex deletes the token the next time Apple or Expo reports that it no longer works (DeviceNotRegistered). The three are separate: with breaking alerts off and a brief or a story follow still on, the server keeps the token and your choices to send those, sends no breaking alerts, and deletes the stories it was holding for a breaking-alert summary or for the end of quiet hours.
If a brief is on and Code Annex's server does not send it (for example, this phone has no push token), the brief is scheduled as a local daily alert on the phone and is not sent through Code Annex's server.
Test versions of the app (TestFlight) also have an owner sign-in, used only by Code Annex on its own phone: it sends the owner password once with that phone's push token, and the server marks that one token as the owner's. The App Store version does not have it, and readers never need it.
Share pages. Anyone with a share link can open a public page for that story (/s/ plus the story's code) on Code Annex's server. That page shows the headline (credited to its outlet), the summary when the story has one, and the source links already in the app. Opening it is like loading any web page: the front door logs the request as described in section 2. The page does not set cookies and does not ask who you are.
4. Reporting a problem with a story
Each story has a Report a problem button. If you send a report, the app sends Code Annex's server:
- the story it is about and what is wrong (Summary is wrong, Mixes different stories, Title doesn't match, Wrong country, or Other);
- your note, if you write one (up to 280 characters; please don't include personal details);
- the random install code described in section 1. It is not your Apple Account, phone number, or push token. The server stores only a scrambled (hashed) form of it, so the same phone can report each story once.
The server stores the report with the story's code and headline. Why: only to find and fix wrong stories. When several people say a story mixes different events, the AI editor in section 2 checks its headlines again; your note is never sent to the AI editor. How long: 90 days, then the report is deleted. The server counts reports per IP address and per phone code in memory only (10 an hour), to stop abuse; that count is not written to disk.
Settings also has Report a wrong story, which opens your own email app with a message addressed to conditiononenews@thecodeannex.com. Nothing is sent unless you send that email. If you do, Code Annex receives your email address and what you wrote, and uses them only to answer you and fix the story.
Request an X account (Settings → Sources) works the same way: the app sends the accounts you suggest (up to 5 at a time), what you say each covers (up to 200 characters), whether you said it is your own, and the random install code, which the server stores only in scrambled form (scrambled differently from reports). If you say an account is your own, the server keeps that X username with your request, marked as yours: an X username can identify you, so only say so if you are happy for Code Annex to know it. Why: only so Code Annex can decide which accounts to follow; the requests and the count of phones asking for each account are visible only to Code Annex. How long: a year. Requests are counted per IP address and per phone code in memory only (10 an hour).
5. Reads and reactions
Each story can show how many phones opened it (only from 10 up, for example "Read by 1.2K people") and five fixed reactions: Sad, Worrying, Surprising, Hopeful, Important. Each phone can pick one reaction per story; tap it again to remove it. There are no comments.
When you open a story or tap a reaction, the app sends Code Annex's server:
- which story it is;
- which reaction you picked, if any;
- the random install code described in section 1. It is not your Apple Account, phone number, or push token. The server never stores the code itself, only a scrambled (hashed) form made with a secret salt kept on the server, different from the one used for reports. That hash lets the server count each phone once and let you switch or remove your reaction.
Why: only to show these anonymous counts on the story. The counts are never used to rank the feed, mark a story Breaking, set its confirmation level, or decide alerts. How long: while the story is live or in the search archive (90 days); a story's counts are dropped once it has left both. The server also counts these requests per IP address and per install code in memory only (30 per 10 minutes per IP, 60 per 10 minutes per phone), to stop abuse; that count is not written to disk.
6. Error reports
When something in the app breaks (an error the app's code did not catch, or a screen that failed to draw), the app sends Code Annex's server an error report. This happens in App Store and TestFlight versions, never in development versions, at most 5 times until the app is restarted, and at most once every 10 minutes for the same error. The report contains:
- the error message (up to 300 characters), the technical trace of where in the app's code it happened (up to 4,000 characters), and whether the error stopped the app;
- which part of the app it happened in;
- the app's version, build, and update code;
- the iOS version and the iPhone model (for example "iPhone 15 Pro");
- the time;
- the random install code described in section 1, which the server stores only in scrambled form (the same scrambled form Report a problem uses, so Code Annex can tell how many phones hit the same error).
Error messages describe what the app's own code was doing; they can mention a story's code or a web address the app was loading. The app does not add your settings, your notes, or anything else you typed. Why: only to find and fix bugs. Only Code Annex can read the reports. They are not sent to the AI editor and are not linked to your push token. How long: 14 days (and at most the newest 500 reports in all), then deleted.
7. Links to other websites and apps
When you tap a source link, it opens in Safari. Those sites have their own privacy policies, which Code Annex does not control. Request an X account can also open a search on X in Safari, and Report a wrong story opens your email app.
8. Expo: app updates and notifications
The app is built with Expo's tools and uses two Expo services (Expo, by 650 Industries, Inc.):
- App updates. Each time the app starts, it asks Expo's update service (
u.expo.dev) whether a newer version of the app's code is ready, and downloads it if so. That request carries your IP address, a random code that Expo's update library made for this install, that it is an iPhone, the app's version and the update codes it is running, and, if the app failed to start after an update, that error message. Expo uses this to deliver updates (including rolling them out gradually) and may count how many installs run each update. - Notifications. If you turn alerts on, Expo creates the push token (section 3) and relays each notification to Apple. Expo's notification library keeps its random installation code in the iPhone's keychain (section 1).
Expo handles this data under its own privacy policy and terms, as a service provider for Code Annex.
9. Crash reports from Apple
If you have chosen in iOS Settings to share analytics with app developers, Apple may also send Code Annex anonymous crash reports and usage statistics. That is controlled by you in iOS (Settings > Privacy & Security > Analytics & Improvements) and handled under Apple's privacy policy. Apart from the error reports in section 6 and Expo's update check in section 8, the app contains no analytics or crash-reporting tools.
10. Who Code Annex shares data with
Code Annex does not sell, rent, or trade personal data. The only parties that handle data are service providers that run the app for Code Annex, and only for that purpose:
- Oracle Cloud (server hosting, US West, Phoenix): stores the stories, the push records in section 3, story reports and X account requests in section 4, hashed read and reaction records in section 5, error reports in section 6, and the backups and front-door logs in section 2.
- Expo (650 Industries, Inc.) (app updates and push relay, section 8).
- Anthropic (the AI editor in section 2): receives public news headlines and posts only, no data about you.
- Apple (notification delivery, and optional crash reports you opted into with Apple).
Each is bound by its own terms. Code Annex may disclose data if the law requires it (for example a valid court order).
11. Children
The app shows real news about war, attacks, and other serious events. It is not directed at children under 13, and Code Annex does not knowingly collect their data.
12. Your choices and rights
- Turn off notifications: in the app's Settings (Breaking alerts, the briefs, and the stories you follow) or iOS Settings > Notifications > Condition One. With all of them off, or notifications off in iOS, the app unregisters the token as described in section 3.
- Delete on-device data: delete the app (section 1 names the one code iOS can keep after that).
- Ask about or delete server data: email conditiononenews@thecodeannex.com. Because there are no accounts, Code Annex can only find your data if you give something to match it with (for example the approximate time you used the app, or the push token if you still have the app installed). Front-door logs, error reports, and backups are deleted on the schedules above anyway.
- Depending on where you live (for example the European Union, United Kingdom, or California), you may have legal rights to access, correct, delete, or object to the use of your personal data, and to complain to your local data protection authority. Email Code Annex to use them; Code Annex will reply within 30 days.
- Legal basis (for European users): the news download, security logs, and error reports are needed to provide the service, keep it secure, and keep it working; notifications only with your permission.
13. Security
Data between the app and Code Annex's server is sent over encrypted connections (HTTPS). Access to the server is restricted. No system is perfectly secure, but Code Annex keeps the data it holds to a minimum.
14. Changes
If this policy changes, Code Annex will update this page and the effective date. Big changes (for example any new type of data) will also be noted in the app's release notes.
15. Contact
conditiononenews@thecodeannex.com Code Annex