Sicherheit & Überprüfung
Zuletzt aktualisiert am 11. August 2026
Comoji fragt nach Bedienungshilfen und Eingabeüberwachung. Das sind die zwei invasivsten Berechtigungen, die macOS kennt, und „Vertrau uns, es ist alles lokal“ ist keine Antwort. Diese Seite gibt es, damit du uns nicht beim Wort nehmen musst: Unten steht jeder Host, den die App kontaktieren kann, was jeden Kontakt auslöst, und die genauen Befehle, mit denen du Comoji auf deinem eigenen Rechner beobachten kannst, während du tippst.
Die Kurzfassung: Deine Tastenanschläge verlassen nie deinen Mac. Nicht zu uns, nicht zu irgendwem. Comoji hat kein Konto, keine Telemetrie, keine Analyse und kein Absturzbericht-Tool. Die einzigen Netzwerkanfragen sind die vier unten aufgeführten, und keine davon enthält etwas, das du tippst, außerhalb des Suchfelds im GIF-Picker selbst.
Lieber eine Schritt-für-Schritt-Anleitung? So prüfst du Schritt für Schritt, dass Comoji lokal bleibt zeigt das mit Screenshots und Befehlen zum Kopieren.
Wofür jede Berechtigung genutzt wird
Die Berechtigungsabfrage von macOS sagt dir, welche Berechtigung eine App will, aber nie, was die App damit macht. Deshalb hier ganz genau:
Eingabeüberwachung
- Genutzt für: einen Tastatur-Event-Tap, der auf ein Kürzel mit Doppelpunkt am Anfang wie
:lizachtet. Die Zeichen sammeln sich in einem kleinen Puffer im Arbeitsspeicher, der verworfen wird, sobald das Kürzel endet (Leerzeichen, Escape, ein Klick woanders oder ein übernommener Treffer). - Nie genutzt für: das Aufzeichnen, Speichern oder Übertragen dessen, was du tippst. Der Puffer wird nie auf die Festplatte geschrieben, nie protokolliert und nie irgendwohin gesendet. Die Testsuite der App lässt den Build scheitern, wenn eine Netzwerk-API oder eine entfernte URL im Code auftaucht, der Tastenanschläge verarbeitet.
- Gar nicht beobachtet: sichere (Passwort-)Textfelder, dazu eine eingebaute Ausschlussliste mit Passwortmanagern, Terminals sowie Remote- und VM-Clients und jede App oder Website, die du selbst unter Einstellungen › Datenschutz hinzufügst.
Bedienungshilfen
- Genutzt für: die Frage an macOS, welches Textfeld den Tastaturfokus hat und wo seine Einfügemarke auf dem Bildschirm liegt, damit das Vorschlagsfenster an der richtigen Stelle erscheint; und um das gewählte Emoji in dieses Feld zurückzutippen (simulierte Rücktasten plus ein kurzes Einfügen über die Zwischenablage, danach wird deine vorherige Zwischenablage wiederhergestellt).
- Nie genutzt für: das Lesen des Feldinhalts, deiner Dokumente, deiner Nachrichten oder anderer Fenster.
Die komplette Netzwerk-Angriffsfläche
Das ist die ganze Liste. Wenn du jemals siehst, dass Comoji sich mit einem Host verbindet, der nicht darauf steht, ist das ein Bug, und wir wollen davon unter support@comoji.io hören.
storage.googleapis.com
- Was: Der Update-Feed (ein Sparkle-Appcast) und die DMG der neuen Version. Beide liegen in Comojis Firebase-Storage-Bucket.
- Wann: Die Update-Prüfung und der Download im Hintergrund sowie der Menüpunkt „Nach Updates suchen …“. Schalte „Comoji aktuell halten“ in den Einstellungen aus, dann passiert das nur, wenn du es anstößt.
- Was in der Anfrage steht: Ein einfaches GET. Der User-Agent von Sparkle enthält den App-Namen und deine aktuelle Version.
fonts.gstatic.com
- Was: Sticker-Grafiken (Googles Noto Animated Emoji) für Sticker, die nicht schon in der App enthalten sind.
- Wann: Das Auswählen eines nicht enthaltenen Stickers im /sticker-Picker. Nach dem ersten Gebrauch auf deinem Mac zwischengespeichert, passiert also einmal pro Sticker.
- Was in der Anfrage steht: Ein einfaches GET für eine einzelne Bilddatei, benannt nach dem Codepoint des Emoji.
api.giphy.com
- Was: GIF-Suche und Trend-Ergebnisse für den /gif-Picker.
- Wann: Das Öffnen von /gif und jede Suche, die du in diesen Picker tippst. Nie automatisch: kein /gif, keine Anfrage.
- Was in der Anfrage steht: Nur der Text, den du in das Suchfeld des GIF-Pickers tippst, plus Comojis GIPHY-API-Schlüssel und, wenn Comoji in einer anderen Sprache als Englisch läuft, der Code dieser Sprache (z. B. de), damit die Ergebnisse passen. Nichts, was du sonst irgendwo auf deinem Mac tippst.
*.giphy.com
- Was: Die GIF-Dateien selbst, vom CDN von GIPHY (media0–media4.giphy.com).
- Wann: Das Anzeigen oder Einfügen eines GIF aus Ergebnissen, die du bereits angefordert hast.
- Was in der Anfrage steht: Ein einfaches GET für genau die GIF-URL, die die Suchergebnisse genannt haben.
Sonst nichts
Kein Analyse-Endpunkt, keine Telemetrie, keine Fehlerberichte, kein Lizenzserver, kein Kontosystem. Installiere Comoji, öffne nie /gif oder /sticker, schalte die automatische Update-Prüfung aus, und die App macht null Netzwerkanfragen, solange sie läuft.
Diese Liste ist nicht nur eine Beschreibung der App. Sie ist eine Regel, an die sich die App hält. Nicht jede URL steht im Quellcode: Die GIF-Dateien selbst werden von der Suchantwort von GIPHY benannt. Jeder dieser Abrufe wird vor der Anfrage mit der Liste oben abgeglichen und verworfen, wenn er nicht passt. Weiterleitungen werden genauso geprüft, ein Server, der mit „geh stattdessen dorthin“ antwortet, kann uns also auch nicht woandershin schicken. Selbst eine manipulierte oder gekaperte Suchantwort kann Comoji nicht dazu bringen, einen Host zu kontaktieren, den diese Seite nicht nennt.
Diese Hostnamen tauchen ebenfalls in der App auf, aber Comoji ruft sie nie ab. Es übergibt die URL an macOS, und dein Browser lädt die Seite: www.comoji.io, www.mattsenter.com, www.senter.net, www.stockcar.app, www.premail.pro, www.burly.click, www.beeready.buzz, www.highwire.news, www.orga.bot, www.weatherling.app, www.seedmatrix.com.
So prüfst du das selbst
Jeder Befehl unten liest nur und ist sicher auszuführen. Füge sie ins Terminal ein, während Comoji läuft. (Wenn du den Dev-Build installiert hast, heißt der Prozess ComojiDev statt Comoji.)
1. Beobachte seine Verbindungen, während du tippst
Prüfe zuerst, ob Comoji tatsächlich läuft, und hol dir seine Prozess-ID:
pgrep -x ComojiDu solltest eine Zahl zurückbekommen. Wenn nichts zurückkommt, läuft Comoji nicht (es ist eine Menüleisten-App, schau also in der Menüleiste nach, nicht im Dock), und die Befehle unten würden keine Verbindungen melden, egal ob es welche aufbaut. Hol dir zuerst eine PID, sonst beweist der Rest nichts.
lsof listet die Netzwerk-Sockets auf, die ein Prozess offen hat. Öffne Nachrichten, tippe :fire und drück ein paarmal Tab, dann führe aus:
lsof -nP -i -a -p "$(pgrep -x Comoji)"Erwarte überhaupt keine Ausgabe. Keine Ausgabe heißt, der Prozess hat keine Netzwerkverbindungen offen, und genau das ist die Behauptung, direkt getestet.
Um es fortlaufend zu beobachten, während du die App nutzt, führe das in einem freien Terminal-Fenster aus und tippe eine Weile in einer anderen App:
while :; do
printf '%s ' "$(date +%T)"
lsof -nP -i -a -p "$(pgrep -x Comoji)" | tail -n +2 | awk '{print $9}' | paste -sd' ' -
echo
sleep 2
doneDie Zeile bleibt leer, egal wie viel du tippst. Öffne dann /gif und such nach etwas: Du siehst api.giphy.com und einen CDN-Host von giphy.com auftauchen, und erst dann.
2. Gesamte Bytes rein und raus
nettop zeigt den aufsummierten Datenverkehr pro Prozess und erfasst so auch Kurzlebiges, das lsof zwischen zwei Abfragen verpassen könnte:
nettop -P -p "$(pgrep -x Comoji)"Tippe ein paar Minuten, ohne GIF- und Sticker-Picker anzurühren. Die Spalten bytes_in und bytes_out bleiben bei null. Drück q zum Beenden.
3. Lies die Hostnamen aus dem ausgelieferten Binary
Ein laufender Prozess kann sich nur mit etwas verbinden, das er kennt. Du kannst die URLs direkt aus der App ziehen, die du heruntergeladen hast:
strings -a /Applications/Comoji.app/Contents/MacOS/Comoji \
| grep -Eo 'https?://[A-Za-z0-9._-]+' | sort -u
/usr/libexec/PlistBuddy -c 'Print :SUFeedURL' \
/Applications/Comoji.app/Contents/Info.plistZwei ehrliche Hinweise, damit das zu dem passt, was du tatsächlich siehst. Erstens wird api.giphy.com aus seinem Hostnamen zusammengesetzt statt als vollständige URL gespeichert, es taucht in der ersten Liste also nicht auf. Such direkt danach mit strings -a … | grep -Eo '[a-z0-9.-]*giphy\.com'; dieses Muster passt nur auf Hostnamen und gibt daher den API-Schlüssel nicht aus, der ebenfalls im Bundle steckt. Zweitens bringt das enthaltene Sparkle-Update-Framework eigene Dokumentations-URLs (sparkle-project.org, andymatuschak.org) in Contents/Frameworks/Sparkle.framework mit; das sind Strings in einer Drittanbieter-Bibliothek, keine Hosts, die Comoji kontaktiert.
4. Blockier es in der Firewall und schau, was kaputtgeht
Die stärkste Prüfung ist eine ausgehende Firewall. LuLu ist kostenlos und Open Source; Little Snitch ist der kommerzielle Standard. Stell eine davon so ein, dass sie bei jeder ausgehenden Verbindung warnt, und verweigere dann alles von Comoji. Die Emoji-Autovervollständigung funktioniert genau wie vorher weiter, für immer, weil sie das Netzwerk nie gebraucht hat. Nicht mehr funktionieren nur die Update-Prüfung und entfernte Sticker- oder GIF-Grafiken.
5. Bestätige, dass die App wirklich von uns und unverändert ist
Comoji ist mit einer Apple Developer ID signiert und von Apple notarisiert. Damit prüfst du, dass die Kopie auf deiner Festplatte nicht manipuliert wurde:
codesign -dv --verbose=4 /Applications/Comoji.app
spctl -a -vvv -t exec /Applications/Comoji.app
codesign -d --entitlements - /Applications/Comoji.appWas wir beschlossen haben zu tun, und was nicht
Die naheliegende Frage ist, warum wir nicht einfach alles als Open Source veröffentlichen. Hier steht, wo wir wirklich stehen, damit du die Antwort beurteilen kannst, statt zu raten. Die vollständige Begründung ist im Repository als Architecture Decision Record festgehalten (docs/adr/0001-verifiable-local-processing.md).
- Erledigt: die genaue Netzwerk-Angriffsfläche veröffentlichen. Die Liste oben, auch in der App unter Einstellungen › Datenschutz zu sehen, erzeugt aus derselben Deklaration, gegen die die App kompiliert wird, und zur Laufzeit gegen sie durchgesetzt, sodass eine URL, die der App vom Server eines Dritten übergeben wird, trotzdem keinen nicht offengelegten Host erreichen kann.
- Erledigt: Anleitungen zur Selbstprüfung. Diese Seite und die verlinkte Schritt-für-Schritt-Anleitung.
- Erledigt: die Behauptung in der CI durchsetzen. Jeder Pull Request und jedes Release lässt die Testsuite der App auf einem macOS-Runner laufen (
.github/workflows/app-ci.yml, und noch einmal inrelease.yml, bevor irgendetwas signiert wird). Diese Suite durchsucht die tatsächlichen Quellen und schlägt fehl, wenn ein Host auftaucht, den diese Seite nicht offenlegt, oder wenn eine Netzwerk-API oder entfernte URL im Code auftaucht, der Tastenanschläge verarbeitet. Ein Build, der eine der beiden Regeln bricht, kann weder gemergt noch veröffentlicht werden. - Vorerst abgelehnt: nur den Eingabepfad als Open Source veröffentlichen. Nur den Event-Tap, den Kürzel-Puffer und den Matcher zu veröffentlichen, wäre ein echtes Vertrauenssignal, und es ist der Teil ohne kommerziellen Wert. Wir tun es noch nicht, aus einem ehrlichen Grund statt einem guten: Ein veröffentlichter Ausschnitt, der nicht nachweislich der Code im notarisierten Binary ist, beweist weniger, als er scheint, und es richtig zu machen heißt reproduzierbare Builds (siehe unten). Wir liefern lieber zuerst die Prüfung, die du an dem Binary durchführen kannst, das du tatsächlich heruntergeladen hast. Das lässt sich neu bewerten, und der Eingabepfad ist das Erste, was wir veröffentlichen würden.
- Vorerst abgelehnt: reproduzierbare Builds und ein bezahltes Sicherheits-Audit. Beides sind die glaubwürdigsten Optionen, und beides kostet mehr, als dieses Projekt derzeit einbringt. Aufgeschoben, nicht verworfen: Ein bezahltes Audit durch Dritte mit veröffentlichter Zusammenfassung ist der geplante nächste Schritt, sobald die Einnahmen es tragen, und es würde hier veröffentlicht.
Wenn du etwas davon prüfst und etwas findest, das dieser Seite widerspricht, schreib an support@comoji.io, und wir korrigieren die Seite oder die App, je nachdem, was falsch ist.
Siehe auch die Datenschutzerklärung dazu, was Comoji lokal auf deinem Mac speichert.