Skip to content

Commit 4c5670e

Browse files
committed
Update README and Privacy Policy
1 parent ab222da commit 4c5670e

File tree

2 files changed

+80
-52
lines changed

2 files changed

+80
-52
lines changed

.github/PRIVACY.md

Lines changed: 77 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,108 @@
11
# Privacy Policy
22

3-
**Effective Date:** 03/16/2026
3+
**Effective Date:** 03/22/2026
44

5-
Osprey: Browser Protection is committed to protecting your privacy. This Privacy Policy explains what data is processed
6-
when you use the extension, why, and how. URL checking is the core security function of the extension. When you
7-
navigate to a website, Osprey may send the URL to threat intelligence or DNS filtering services to determine whether
8-
the destination is malicious or inappropriate. This processing is limited to what is necessary for that purpose.
5+
Osprey: Browser Protection and the team behind [OspreyProject](https://github.com/OspreyProject) is committed to
6+
protecting your privacy. This Privacy Policy explains what data is processed when you use the extension, why, and how.
7+
8+
Osprey consists of two components:
9+
10+
- The **browser extension**, which runs locally on your device.
11+
- The **proxy server** (OspreyProxy), which runs on a VPS hosted in New York, NY
12+
at [api.osprey.ac](https://api.osprey.ac).
13+
14+
Understanding which component does what is important for understanding how your data is handled.
915

1016
## What Data Is Processed and Why
1117

12-
For DNS-based providers (AdGuard DNS, CERT-EE, CleanBrowsing, Cloudflare, Control D, Quad9, and Switch.ch), only the
13-
hostname is sent as part of a DNS-over-HTTPS query. For API-based providers (alphaMountain and PrecisionSec), the full
14-
URL including path is sent. These API requests are routed through Osprey's own proxy server hosted in New York, NY,
15-
rather than directly to the provider.
18+
URL checking is the core security function of the browser extension. When you navigate to a website, the browser
19+
extension sends the URL to the proxy server, which checks it against threat intelligence providers, DNS filtering
20+
services, and local threat intelligence lists to determine whether the URL is unsafe.
1621

17-
The proxy does not log IP addresses in any form and does not log request bodies under normal operation. It may log the
18-
submitted URL if an upstream provider returns a 400 response, and the hostname may appear in error output on internal
19-
failures or blocked connection attempts. These messages are never written to disk; they exist only in the VPS's runtime
20-
memory via journald and are lost when the server restarts. The proxy also logs aggregate request counts per provider
21-
(requests per minute and a running total), which contain no IP addresses or URLs. The proxy source code is open-source
22-
and [available for review on GitHub](https://github.com/OspreyProject/OspreyProxy).
22+
The browser extension sends the full URL to the proxy server for all checks. How the proxy server handles it depends
23+
on the provider type:
2324

24-
Osprey does not collect browsing history, user identifiers, or analytics of any kind.
25+
- **DNS-based providers** (AdGuard DNS, CERT-EE, CleanBrowsing, Cloudflare, Control D, Quad9, and Switch.ch): the
26+
proxy server extracts only the hostname and submits it as a DNS-over-HTTPS query.
27+
- **API-based providers** (alphaMountain and PrecisionSec): the proxy server forwards the full URL including path.
28+
- **Local threat intelligence lists**: the proxy server checks the hostname against its own in-memory domain sets
29+
without making any external requests.
2530

26-
## Third-Party Recipients
31+
In all cases, your IP address is never forwarded to any provider directly; providers see only the proxy server's IP
32+
address.
2733

28-
When a URL is checked, the relevant third-party providers receive a network request as part of the standard HTTP
29-
connection. Providers you have disabled in the extension's settings are not contacted.
34+
The proxy server does not log IP addresses in any form and does not log request bodies under normal operation. It may
35+
log the submitted URL if an upstream provider returns a 400 response, and the hostname may appear in error output on
36+
internal failures or blocked connection attempts. These messages are never written to disk; they exist only in the
37+
VPS's runtime memory via journald and are lost when the server restarts. The proxy server also logs aggregate request
38+
counts per provider (requests per minute and a running total), which contain no IP addresses or URLs. The proxy
39+
server's source code is open-source and [available for review on GitHub](https://github.com/OspreyProject/OspreyProxy).
3040

31-
For alphaMountain ([privacy policy](https://alphamountain.ai/privacy-policy/)) and
32-
PrecisionSec ([privacy policy](https://precisionsec.com/privacy-policy/)), requests are routed through Osprey's proxy
33-
server, so your IP address is not forwarded to those providers directly.
41+
The proxy server does not collect browsing history, user identifiers, or analytics of any kind. The browser extension
42+
stores visited URLs locally in your browser as part of its caching system and does not transmit this cached data
43+
anywhere; this is described further in the Data Stored Locally section below.
3444

35-
For DNS-based providers, your IP address is visible to the provider as part of the DNS-over-HTTPS query. These providers
36-
are AdGuard DNS ([privacy policy](https://adguard-dns.io/en/privacy.html)),
37-
CERT-EE ([privacy policy](https://ria.ee/en/authority-news-and-contact/processing-personal-data)),
38-
CleanBrowsing ([privacy policy](https://cleanbrowsing.org/privacy)),
39-
Cloudflare ([privacy policy](https://cloudflare.com/privacypolicy)),
40-
Control D ([privacy policy](https://controld.com/privacy)),
41-
Quad9 ([privacy policy](https://quad9.net/privacy/policy)),
42-
and Switch.ch ([privacy policy](https://switch.ch/en/data-protection)).
45+
## Third-Party Recipients
4346

44-
Osprey also fetches local filtering lists from GitHub every 5 minutes to stay current. These requests are made to
45-
GitHub's CDN (operated by Microsoft), which receives your IP address as part of the connection. The lists are
46-
Phishing.Database and PhishDestroy. GitHub's privacy policy applies to these requests and is available
47-
at [GitHub's General Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement).
47+
When a URL is checked, the browser extension sends it to the proxy server, which then contacts the relevant
48+
third-party providers on your behalf. Providers you have disabled in the browser extension's settings are not
49+
contacted. Because all provider requests originate from the proxy server rather than your device, third-party
50+
providers never receive your IP address.
51+
52+
- **API-based providers** receive the full URL:
53+
- alphaMountain ([privacy policy](https://alphamountain.ai/privacy-policy/))
54+
- PrecisionSec ([privacy policy](https://precisionsec.com/privacy-policy/))
55+
- **DNS-based providers** receive only the hostname as part of a DNS-over-HTTPS query:
56+
- AdGuard DNS ([privacy policy](https://adguard-dns.io/en/privacy.html))
57+
- CERT-EE ([privacy policy](https://ria.ee/en/authority-news-and-contact/processing-personal-data))
58+
- CleanBrowsing ([privacy policy](https://cleanbrowsing.org/privacy))
59+
- Cloudflare ([privacy policy](https://cloudflare.com/privacypolicy))
60+
- Control D ([privacy policy](https://controld.com/privacy))
61+
- Quad9 ([privacy policy](https://quad9.net/privacy/policy))
62+
- Switch.ch ([privacy policy](https://switch.ch/en/data-protection))
63+
- **Local threat intelligence lists** are checked entirely within the proxy server and involve no external requests.
4864

4965
## Browser Permissions
5066

51-
Osprey requires several browser permissions to function. The tabs permission is used to detect navigation events and
52-
apply protection. The storage permission is used to cache results locally and persist your settings. The webNavigation
53-
permission is used to intercept page navigations before they complete. The notifications permission is used to alert you
54-
when a malicious website is blocked. The contextMenus permission is used to provide the right-click menu options. The
55-
host permissions entry covering all URLs is used to inspect navigated URLs across all websites.
67+
The browser extension requires several permissions to function:
68+
69+
- `tabs`: used to detect navigation events and apply protection.
70+
- `storage`: used to cache results locally on your device and persist your settings.
71+
- `webNavigation`: used to intercept page navigations before they complete.
72+
- `notifications`: used to alert you when a malicious website is blocked.
73+
- `contextMenus`: used to provide the right-click menu options.
74+
- `host` permissions covering all URLs: used to inspect navigated URLs across all websites.
5675

5776
These permissions are used strictly for the security features described above and are not used to collect or transmit
5877
personal information.
5978

6079
## Data Stored Locally
6180

62-
Osprey stores several categories of data in your browser's local extension storage. It stores a URL cache containing
63-
domains that have been checked, along with their result and an expiration time; this data never leaves your device
64-
except as part of normal URL checking. It also stores your protection preferences, such as which providers are enabled,
65-
and the downloaded local filtering lists from PhishDestroy and Phishing.Database. All locally stored data is cleared
66-
when you uninstall the extension.
81+
The browser extension stores several categories of data in your browser's local extension storage and session storage.
82+
None of this data is transmitted to the proxy server or any third party.
83+
84+
- An **allowed cache** (local storage) containing URLs that have been checked and found safe, keyed per provider, each
85+
with an expiration time.
86+
- A **blocked cache** (local storage) containing URLs that have been flagged, keyed per provider, each with an
87+
expiration time and the result type (such as malicious or phishing).
88+
- A **processing cache** (session storage) tracking URLs that are currently being checked, to prevent duplicate
89+
requests. This cache is cleared when the browser session ends.
90+
- Your **protection preferences** (local storage), such as which providers are enabled and your cache expiration
91+
settings.
92+
93+
All data in local storage is cleared when you uninstall the browser extension or manually via the context menu.
6794

6895
## Data Retention
6996

70-
Local extension data is retained until you uninstall the extension or clear it manually via the context menu. Any
71-
error-case proxy server log messages exist only in the VPS's runtime memory via journald and are never written to disk;
72-
they are lost when the server restarts and are not retained in any form. Aggregate request counts are retained
73-
indefinitely but contain no personal data.
97+
Local extension data is retained until you uninstall the browser extension or clear it manually via the context menu.
98+
Any error-case log messages on the proxy server exist only in the VPS's runtime memory via journald and are never
99+
written to disk; they are lost when the server restarts and are not retained in any form. Aggregate request counts on
100+
the proxy server are retained indefinitely but contain no personal data.
74101

75102
## Changes to This Privacy Policy
76103

77-
We may update this Privacy Policy from time to time. The effective date at the top of this page reflects the date of the
78-
most recent revision. We encourage you to review this page periodically.
104+
We may update this Privacy Policy from time to time. The effective date at the top of this page reflects the date of
105+
the most recent revision. We encourage you to review this page periodically.
79106

80107
## Contact
81108

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,9 @@ security researchers, and end-users can trust to secure their browsing, wherever
8686
Osprey is committed to being non-profit, non-commercial, and open-source, **forever**, with no plans to monetize the
8787
project in any way. Unlike other free browser extensions, Osprey doesn't collect, profile,
8888
or [sell your browsing data](https://ftc.gov/news-events/news/press-releases/2024/02/ftc-order-will-ban-avast-selling-browsing-data-advertising-purposes-require-it-pay-165-million-over/?utm_source=osprey)
89-
behind your back. We're committed to being as transparent as possible. Osprey runs locally on your device with **zero
90-
telemetry**, user-identifiable back-end analytics, or user accounts needed. Check out
89+
behind your back. URL checks are routed through Osprey's privacy-respecting proxy server
90+
at [api.osprey.ac](https://api.osprey.ac), which forwards requests to our protection partners without transmitting any
91+
personally identifiable information. No user accounts are required. Check out
9192
our [Privacy Policy here](https://osprey.ac/privacy) for more info.
9293

9394
The more protection providers join the project, the better the Osprey threat intelligence platform becomes. If you're

0 commit comments

Comments
 (0)