# Politique de confidentialité — Savvy Fish **Version 0.9.0 — 13 juillet 2026** *(An English version follows below / [Version anglaise plus bas](#privacy-policy--savvy-fish))* ## En une phrase **Savvy Fish n'envoie aucune donnée, nulle part.** Pas de serveur, pas de télémétrie, pas de compte, pas de requête réseau. L'analyse d'une page se fait entièrement sur votre appareil. ## Ce que Savvy Fish ne fait pas - Ne transmet **aucune** donnée à qui que ce soit — y compris à nous : nous n'avons pas de serveur. - Ne collecte, ne conserve, ne vend, ne loue et ne partage aucune information vous concernant. - Aucune télémétrie, aucune statistique d'usage, aucun rapport d'erreur, aucun cookie, aucun identifiant unique, aucune empreinte d'appareil. - Aucun compte, aucune inscription, aucune adresse e-mail demandée. - **Aucune requête réseau, d'aucune sorte.** Le code exécuté par l'extension ne contient l'adresse d'aucun serveur. Vous pouvez le vérifier vous-même (voir « Comment vérifier » plus bas). ## Ce que Savvy Fish lit — et où cela reste L'extension a besoin de regarder certaines choses pour vous protéger. Toutes sont traitées **sur votre appareil**, et aucune n'en sort. **1. L'adresse (URL) des pages que vous visitez.** C'est la matière première de la détection : elle est analysée localement par des modèles d'apprentissage automatique et une liste de sites malveillants, tous deux **embarqués dans l'extension** au moment de son installation. L'adresse n'est jamais transmise. Elle est gardée en mémoire vive le temps de la navigation, et disparaît à la fermeture du navigateur ; elle n'est écrite sur le disque à aucun moment. **2. Le certificat TLS du site — sur Firefox uniquement.** Il est lu localement, via une API du navigateur, pour repérer par exemple un certificat auto-signé. Il n'est jamais transmis. Sur Chrome, cette lecture est impossible sans requête externe : l'extension ne fait donc **rien** de ce côté, plutôt que d'interroger un service tiers. **3. Deux faits structurels de la page — uniquement si elle est déjà jugée suspecte.** Lorsque, et seulement lorsque, l'analyse de l'adresse a déjà levé un doute, l'extension relève deux éléments de structure pour confirmer ou lever ce doute : (a) si un formulaire de mot de passe envoie ses données vers un **autre** domaine que celui de la page, et (b) si le nom d'une marque connue apparaît dans le **titre** de la page. Ces deux faits sont interprétés sur l'appareil puis jetés. **Une page de navigation ordinaire n'est jamais inspectée.** L'extension ne lit jamais le contenu des pages, ne lit jamais ce que vous saisissez, et ne lit jamais vos mots de passe. ## Ce qui est enregistré sur votre appareil — et nulle part ailleurs Ces données sont stockées dans le stockage local de votre navigateur (`storage.local`). Elles ne sont **pas synchronisées** entre vos appareils et ne quittent jamais celui-ci : | Clé | Contenu | | --- | --- | | `phishguard.allowlist` | Votre liste de confiance : les domaines que vous avez choisi d'autoriser. | | `phishguard.allowlist.override` | Les domaines pour lesquels vous avez explicitement forcé la confiance malgré une alerte. | | `phishguard.theme` | Votre préférence d'apparence (clair / sombre / automatique). | | `phishguard.lang` | Votre préférence de langue. | | `phishguard.severity` | Votre niveau de protection (réduite / modérée / renforcée). | | `phishguard.pauseUntil` | L'échéance de la pause, si vous avez suspendu la protection. | Vous pouvez à tout moment **exporter**, **importer** ou **effacer** votre liste de confiance depuis le menu de l'extension. Désinstaller l'extension supprime l'ensemble de ces données. ## Les permissions demandées, et pourquoi Une extension doit déclarer ses permissions, et certaines paraissent larges. Voici à quoi chacune sert réellement. **Sur Firefox** | Permission | Pourquoi elle est nécessaire | | --- | --- | | `webRequest`, `webRequestBlocking` | Rendre le verdict **avant** que la page malveillante ne se charge, pour vous éviter de la voir apparaître, ne serait-ce qu'un instant. C'est ce qui permet le blocage sans clignotement. | | `host_permissions` (`http://*/*`, `https://*/*`) | Le hameçonnage peut se trouver sur **n'importe quel** domaine : nous ne pouvons pas savoir d'avance lesquels sont à vérifier. Cette permission sert uniquement à **lire l'adresse** des pages et à afficher la page d'avertissement. Aucune donnée n'est envoyée nulle part. | | `storage` | Enregistrer vos réglages et votre liste de confiance, localement (tableau ci-dessus). | | `activeTab` | Afficher l'état de l'onglet courant dans le menu de l'extension. | **Sur Chrome** | Permission | Pourquoi elle est nécessaire | | --- | --- | | `webNavigation` | Détecter les navigations pour analyser l'adresse de la page. | | `storage` | Enregistrer vos réglages et votre liste de confiance, localement. | | `activeTab` | Afficher l'état de l'onglet courant dans le menu de l'extension. | ## Mises à jour des listes et des modèles La liste des sites malveillants et les modèles de détection sont **inclus dans l'extension**. Ils ne sont mis à jour qu'avec l'extension elle-même, par le magasin officiel (Chrome Web Store ou Firefox Add-ons), selon le mécanisme normal de mise à jour de votre navigateur. **Savvy Fish ne télécharge rien de son côté.** Si cette conception devait changer un jour — par exemple pour rafraîchir la liste plus souvent — cette politique serait mise à jour **avant** la publication de la version concernée, et le changement serait annoncé clairement. ## Comment vérifier tout cela vous-même Vous n'êtes pas obligé de nous croire sur parole. 1. **Regardez le trafic.** Ouvrez les outils de développement de l'extension (`about:debugging` sur Firefox, `chrome://extensions` en mode développeur sur Chrome), onglet « Réseau », puis naviguez : aucune requête sortante n'apparaîtra, y compris lorsqu'un site est bloqué. 2. **Coupez le réseau.** Passez en mode avion, ouvrez le menu de l'extension, et collez une adresse de hameçonnage dans la barre « Vérifier une adresse » : le verdict tombe quand même. Une détection qui fonctionne **hors ligne** ne peut pas reposer sur un serveur. 3. **Lisez le code.** Savvy Fish est un logiciel libre, publié sous licence GNU GPL v3. ## Modifications de cette politique Toute modification sera publiée sur cette page, avec une nouvelle date. Les changements substantiels — en particulier tout ce qui toucherait au réseau — seront annoncés dans les notes de version. ## Contact notphished@protonmail.com --- # Privacy Policy — Savvy Fish **Version 0.9.0 — 13 July 2026** ## In one sentence **Savvy Fish sends no data anywhere.** No servers, no telemetry, no accounts, no network requests. Pages are analysed entirely on your own device. ## What Savvy Fish does not do - It transmits **no** data to anyone — including us: we run no server. - It does not collect, retain, sell, rent or share any information about you. - No telemetry, no usage analytics, no crash reporting, no cookies, no unique identifiers, no device fingerprinting. - No account, no sign-up, no email address requested. - **No network requests of any kind.** The code the extension runs contains no server address at all. You can verify this yourself (see "How to verify" below). ## What Savvy Fish reads — and where it stays The extension has to look at a few things in order to protect you. All of them are processed **on your device**, and none of them leave it. **1. The address (URL) of the pages you visit.** This is the raw material of detection: it is analysed locally by machine-learning models and a list of malicious sites, both **bundled inside the extension** at install time. The address is never transmitted. It is held in memory while you browse and is gone when you close the browser; it is never written to disk. **2. The site's TLS certificate — on Firefox only.** It is read locally through a browser API, to spot a self-signed certificate for instance. It is never transmitted. On Chrome this cannot be done without an external request, so the extension does **nothing** here rather than query a third-party service. **3. Two structural facts about the page — only if it is already considered suspicious.** When, and only when, the analysis of the address has already raised a doubt, the extension checks two structural details in order to confirm or dispel it: (a) whether a password form submits to a domain **other** than the page's own, and (b) whether a known brand name appears in the page **title**. Both facts are interpreted on the device and then discarded. **Ordinary browsing is never inspected.** The extension never reads page content, never reads what you type, and never reads your passwords. ## What is stored on your device — and nowhere else This data lives in your browser's local storage (`storage.local`). It is **not synchronised** across devices and never leaves this one: | Key | Contents | | --- | --- | | `phishguard.allowlist` | Your trust list: the domains you chose to allow. | | `phishguard.allowlist.override` | Domains you explicitly forced trust on, despite a warning. | | `phishguard.theme` | Your appearance preference (light / dark / automatic). | | `phishguard.lang` | Your language preference. | | `phishguard.severity` | Your protection level (reduced / moderate / strict). | | `phishguard.pauseUntil` | The expiry of the pause, if you suspended protection. | You can **export**, **import** or **erase** your trust list at any time from the extension's menu. Uninstalling the extension deletes all of this data. ## The permissions requested, and why Extensions must declare their permissions, and some of them look broad. Here is what each one is actually for. **On Firefox** | Permission | Why it is needed | | --- | --- | | `webRequest`, `webRequestBlocking` | To reach a verdict **before** a malicious page loads, so that you never see it appear, even for an instant. This is what makes blocking flicker-free. | | `host_permissions` (`http://*/*`, `https://*/*`) | Phishing can live on **any** domain: there is no way to know in advance which ones need checking. This permission is used solely to **read the address** of pages and to show the warning page. No data is sent anywhere. | | `storage` | To save your settings and your trust list, locally (see the table above). | | `activeTab` | To show the current tab's status in the extension's menu. | **On Chrome** | Permission | Why it is needed | | --- | --- | | `webNavigation` | To detect navigations so the address can be analysed. | | `storage` | To save your settings and your trust list, locally. | | `activeTab` | To show the current tab's status in the extension's menu. | ## Updates to lists and models The list of malicious sites and the detection models are **included in the extension**. They are updated only when the extension itself is updated, through the official store (Chrome Web Store or Firefox Add-ons), using your browser's normal update mechanism. **Savvy Fish downloads nothing on its own.** Should this design ever change — for example to refresh the list more often — this policy would be updated **before** the release in question, and the change would be announced clearly. ## How to verify all of this yourself You do not have to take our word for it. 1. **Watch the traffic.** Open the extension's developer tools (`about:debugging` on Firefox, `chrome://extensions` in developer mode on Chrome), go to the "Network" tab, and browse: no outgoing request will appear, not even when a site is blocked. 2. **Cut the network.** Switch to airplane mode, open the extension's menu, and paste a phishing address into the "Check an address" bar: you still get a verdict. Detection that works **offline** cannot be relying on a server. 3. **Read the code.** Savvy Fish is free software, released under the GNU GPL v3. ## Changes to this policy Any change will be published on this page with a new date. Substantial changes — in particular anything touching the network — will be announced in the release notes. ## Contact notphished@protonmail.com