Ein Blick in die versteckten Bestandteile einer Bürodatei
Eigene Darstellung. Das Bild zeigt keine Messergebnisse eines bestimmten Dienstes.
Wer eine Datei in ein KI-Werkzeug zieht, will meist etwas über den Inhalt wissen. Die zweite Frage kommt später: Was ist von der Datei selbst noch mitgegangen? Eine Bürodatei ist kein Blatt Papier, sondern ein Archiv, und darin liegen Teile, die im Fenster nicht auftauchen.
Die Frage, ob wichtige Informationen nach außen gelangen, hat zwei Hälften. Die erste betrifft das Modell: Es ist zustandslos, es merkt sich die Datei nicht, und der eingesandte Text verändert keine Parameter. Die zweite Hälfte betrifft alles davor. Und dort entscheidet sich der größere Teil, weil ein Dokument schon vor dem Absenden Dinge mitbringt, die niemand eingetippt hat. Der geprüfte Ausschnitt ist deshalb bewusst klein: nur die Datei, noch vor jeder Anfrage.
Umgebung und Vorgehen
| Bestandteil | Festlegung |
|---|---|
| Prüfobjekt | eine Word-Datei und eine Excel-Mappe, für diesen Test erzeugt |
| Sichtbarer Inhalt | Angebotsnummer, Kundenname, Ansprechpartner, Telefonnummer, Betrag |
| Zusätzliche Bestandteile | ein Kommentar, eine nachverfolgte Änderung, Autorenangaben, ein ausgeblendetes Blatt |
| Werkzeug zum Erzeugen | Python 3 mit python-docx und openpyxl |
| Werkzeug zum Lesen | zipfile aus der Standardbibliothek |
| Ort der Prüfung | lokal, vor jeder Anfrage |
| Datum | 22. Oktober 2026 |
Die Testdateien sind absichtlich unauffällig. Im geöffneten Fenster zeigen sie einen Absatz mit einer Angebotsnummer und einen Betrag. Alles Weitere wird erst sichtbar, wenn man die Datei als Archiv öffnet.
Schritt 1: Die Datei als Archiv lesen
Sowohl .docx als auch .xlsx sind ZIP-Archive mit einer festgelegten Ordnerstruktur. zipfile listet die Teile auf, ohne dass ein Büroprogramm beteiligt ist:
import zipfile with zipfile.ZipFile("beispiel-angebot.docx") as z: for name in z.namelist(): print(name) Die Testdatei besteht aus 18 Teilen. Die meisten sind unauffällig: Formatvorlagen, Schriftdefinitionen, Beziehungsdateien. Interessant sind vier Einträge, nämlich docProps/core.xml, word/comments.xml, word/document.xml und, in der Excel-Mappe, xl/workbook.xml.
Schritt 2: Die vier Bestandteile einzeln prüfen
Autorenangaben. docProps/core.xml enthält unter anderem dc:creator und cp:lastModifiedBy. Das sind keine technischen Kennungen, sondern Namen. In der Testdatei steht M. Keller als Ersteller und S. Brandt als letzte Bearbeitung.
Kommentare. Liegt word/comments.xml im Archiv, hängen Kommentare an der Datei. Sie stehen nicht im Fließtext und werden beim Kopieren des sichtbaren Absatzes nicht mitgenommen, beim Hochladen der Datei aber sehr wohl. Im Test lautet der Kommentar: „Betrag bitte gegen die Kalkulation prüfen, alter Wert war 138000 EUR."
Änderungsverlauf. Bei eingeschalteter Nachverfolgung steht in word/document.xml neben dem sichtbaren Text eine <w:ins>- und eine <w:del>-Auszeichnung. Entscheidend ist der Inhalt der Löschung: Sie wird als <w:delText> gespeichert und trägt den alten Wert weiter, obwohl er im Fenster nicht mehr zu sehen ist. In der Testdatei ist das die Zahl 138000 EUR, also dieselbe Zahl, die auch im Kommentar steht.
Blattzustände. In der Excel-Mappe steht in xl/workbook.xml zu jedem Blatt ein Zustand. Zwei Blätter der Testdatei sind ausgeblendet: Intern mit dem Zustand hidden und Kalkulation mit dem Zustand veryHidden. Das erste lässt sich über das Einblenden-Menü zurückholen, das zweite trägt den Zustand, der dort nicht auftaucht. Im Blatt Intern stehen Kundenname, Ansprechpartner und Telefonnummer.
Eigene Darstellung der vier Bestandteile. Das Bild zeigt keine Messergebnisse eines bestimmten Dienstes.
Verifikation: was das Auslesen ergeben hat
Das folgende Protokoll stammt aus einem Lauf gegen die beiden Testdateien:
Datei: beispiel-angebot.docx (18 Teile im Archiv) docProps/core.xml Ersteller: M. Keller docProps/core.xml zuletzt geändert von: S. Brandt word/comments.xml 1 Kommentar(e), Autor: S. Brandt | Text: Betrag bitte gegen die Kalkulation prüfen, alter Wert war 13 word/document.xml 2 überarbeitete Stellen (1 Einfügung, 1 Löschung, gelöscht: 138000 EUR) Datei: beispiel-liste.xlsx (14 Teile im Archiv) xl/workbook.xml "Angebot" sichtbar | "Intern" verborgen | "Kalkulation" sehr verborgen xl/comments1.xml 1 Zellnotiz Drei Beobachtungen daraus:
- Der gelöschte Betrag
138000 EURsteht weiterhin in der Datei. Wer im Fenster nachsieht, findet ihn nicht. - Die Namen der Bearbeitenden sind Teil der Datei, obwohl sie niemand in den Text geschrieben hat.
- Das ausgeblendete Blatt
Internenthält genau die Angaben, die bei einer Weitergabe niemand mitsenden wollte.
Eigene Darstellung des Vergleichs. Das Bild zeigt keine Messergebnisse eines bestimmten Dienstes.
Fehlersuche: vier Muster, die sich wiederholen
Nur den sichtbaren Text prüfen. Der Absatz im Fenster ist sauber. Das Archiv ist es nicht.
Änderungen weder annehmen noch verwerfen. Nachverfolgte Änderungen verschwinden nicht dadurch, dass man die Nachverfolgung ausschaltet. Erst das Annehmen oder Verwerfen entfernt Löschungen aus dem XML.
Den Kommentar übersehen, obwohl er den alten Wert trägt. Im Test steht die Zahl, die aus dem Text entfernt wurde, im Kommentar daneben.
Ausgeblendete Blätter für gelöscht halten. hidden und veryHidden sind Zustände, keine Löschung. Die Daten liegen weiter im Archiv.
Was ich nicht geprüft habe
Das Protokoll zeigt, was in den Dateien steht. Es zeigt nicht, was ein bestimmter Dienst davon liest, wie lange er es speichert und ob er es zum Verbessern von Modellen verwendet. Das sind drei getrennte Fragen, und für die letzten beiden ist dieses Protokoll kein Beleg.
Ungeprüft ist auch der Weg über einen PDF-Export. Ob dort ebenfalls Autorenangaben stehen bleiben, habe ich nicht gemessen und behaupte es deshalb nicht.
Und das Protokoll sagt nichts über das Modell selbst. Dass es sich die Datei nicht merkt, folgt daraus, wie es arbeitet, nicht aus diesem Lauf.
Was vor dem Senden hilft
Die Prüfung lässt sich in einen Satz fassen: Was im Fenster steht, ist nicht alles, was die Datei enthält. Wer mehrere Werkzeuge im Einsatz hat, findet die Einstellungen zu Reichweite und Endpunkt bei jedem Werkzeug an anderer Stelle; ein Beispiel für eine solche Einrichtung ist die Codex-CLI-Anleitung. Für den Aufruf selbst lässt sich ein einheitlicher Endpunkt setzen. Ich nutze dafür Crazyrouter, weil sich damit das Modell wechseln lässt, ohne die aufrufende Stelle anzufassen.
Wichtig bleibt der zweite Teil des Satzes: Ein Gateway liegt auf derselben Strecke und liest denselben Text. Crazyrouter steht dabei auf demselben Weg wie jede andere Zwischenstation. Es ändert die Bedingungen, unter denen Kopien entstehen, nicht die Tatsache, dass sie entstehen.
Austausch
Wer schon einmal eine Datei verschickt und erst danach gemerkt hat, dass ein Kommentar oder ein ausgeblendetes Blatt mitgegangen ist: An welcher Stelle prüft ihr das inzwischen?
Quellenstand: 22. Oktober 2026. Die Testdateien wurden an diesem Tag erzeugt und ausgelesen; das Protokoll oben ist die Ausgabe dieses Laufs. Speicherfristen und Trainingsbedingungen unterscheiden sich je Anbieter und sind dort zu prüfen, wo die Anfrage tatsächlich landet.


