SMS-Codes in CI und QA-Automatisierung mit dem iPhone
Von Fwrd · · Aktualisiert am
Um SMS-Einmalcodes in CI oder QA-Automatisierung zu bekommen, steckst du die SIM, die die Codes empfängt, in ein Team-iPhone und lässt eine Nachricht-Automation in „Kurzbefehle“ jede Code-SMS an Fwrd übergeben, das sie als JSON an deinen eigenen HTTPS-Webhook postet. Dein CI-Job liest dann den neuesten Code von diesem Endpunkt und gibt ihn auf dem Anmeldebildschirm ein.
Was du brauchst: ein iPhone mit iOS 26 oder neuer und der SIM, deren Nummer die Codes bekommt, die App „Kurzbefehle“ (sie ist schon auf dem iPhone), Fwrd und eine öffentliche HTTPS-Adresse, die dein CI lesen kann, etwa eine Staging-Route oder ein n8n-Workflow. Fwrd lehnt IP-Adressen und Namen mit .local oder .internal ab und sendet keinen Login-Header. Setze deshalb ein langes Geheimnis in die Adresse.
Warum lassen sich SMS-Codes so schwer automatisieren?
SMS-Codes bremsen CI aus, weil sie auf einem Telefon landen und nicht auf deinem Runner, bis etwas jede SMS dorthin bringt, wo deine Pipeline sie lesen kann.
Die meisten Teams, die solche Prüfungen schreiben, haben nur ihr eigenes Telefon, um den Code zu empfangen. Ein Team-iPhone mit Fwrd macht dieses Telefon zu etwas, das deine Pipeline lesen kann.
Wann passt ein Team-iPhone?
Es passt, wenn der Code eine bestimmte Mobilfunknummer erreichen muss: einen Drittanbieter-Dienst, bei dem du dich anmeldest, ein Staging-Konto, das schon an das Firmentelefon gebunden ist, oder einen Ablauf, der Nummern nach Typ unterschiedlich behandelt. Die Lookup-Dokumentation von Twilio (Stand: 17. Oktober 2026) zeigt, dass Apps eine Mobilfunknummer von einer nicht festen VoIP-Nummer unterscheiden können, die Twilio als virtuelle, online besorgte Nummer beschreibt. Eine SIM in einem Team-iPhone ist eine echte Mobilfunknummer, der Code kommt also so an wie bei einem Kunden.
Der Kompromiss: Ein Telefon heißt eine Nummer, und es muss eingeschaltet und online bleiben. Die Abschnitte unten behandeln beides.
So schickst du SMS-Codes vom iPhone an dein CI
Füge in Fwrd ein Webhook-Ziel hinzu, das nur Codes durchlässt, und dann eine Nachricht-Automation, die jede Code-SMS an Fwrd übergibt. Die Webhook-Anleitung beschreibt die Seite des Endpunkts ausführlich.
Füge in Fwrd einen Webhook hinzu. Öffne Fwrd, tippe auf + und wähle „Webhook“. Füge die ganze HTTPS-Adresse deines Endpunkts in das Feld „Configuration“ (Konfiguration) ein, tippe auf „Send Test Message“ (Testnachricht senden), damit dein Endpunkt die Felder kennenlernt, und sichere dann mit dem Häkchen.
Lass nur Codes durch. Wähle im selben Ziel unter „Which Texts“ (Welche SMS) die Option „Only Some Texts“ und schalte „Looks Like a Code“ ein. Das lässt SMS mit einem Code aus 4 bis 8 Ziffern durch. Das ist eine Bedingung, sie funktioniert also im kostenlosen Plan.
Lege eine Nachricht-Automation an. Unter iOS 27 öffnest du „Kurzbefehle“ und tippst auf „Mediathek“, dann auf „Automation“ und auf +. Siehst du „Kurzbefehl beschreiben“, tippe auf „Bearbeiten“. Tippe auf „Automation“, dann auf „Nachricht“, ändere „Absender:in“ in „Nachricht“ und gib code ein oder das Wort, das die SMS deines Dienstes verwenden. Unter iOS 26 öffnest du den Tab „Automation“, tippst auf + und wählst „Nachricht“. Das Wort gibst du unter „Nachricht enthält“ ein.
Lass sie ohne Rückfrage laufen. Unter iOS 27 tippst du auf den Pfeil neben dem Trigger und stellst sicher, dass „Vor dem Ausführen bestätigen“ ausgeschaltet ist. Unter ⓘ und dann „Datenschutz“ stellst du sicher, dass „Ausführung im Sperrzustand erlauben“ eingeschaltet ist. Unter iOS 26 wählst du „Sofort ausführen“ und tippst dann auf „Weiter“ und „Neuen Kurzbefehl erstellen“.
Füge die Aktion von Fwrd hinzu. Suche nach „Forward“ und füge „Forward Message to All Destinations“ (Nachricht an alle Ziele weiterleiten) hinzu. Setze ihr Feld „Nachricht“ auf „Kurzbefehleingabe“ (unter iOS 26 „Kurzbefehleingabe“, dann „Nachricht“). Tippe auf „Zurück“ zum Sichern (unter iOS 26 auf „Fertig“).
Lies den Code im CI. Lass deinen Endpunkt jeden Body mit der Ankunftszeit speichern. Wenn dein Lauf einen Code angefordert hat, fragst du wiederholt nach der neuesten SMS, die seither angekommen ist, und holst die Ziffern mit einem regulären Ausdruck heraus.
Das war's. Neue Code-SMS erreichen jetzt von selbst deinen Endpunkt, bei entsperrtem und bei gesperrtem iPhone.
Was bekommt der Endpunkt?
Einen POST mit JSON-Body, der den Text genau so enthält, wie er ankam, sowohl in content als auch in text. Einen Zeitstempel gibt es nicht, halte die Zeit also auf deiner Seite fest.
{
"content": "Your verification code is 482913",
"text": "Your verification code is 482913"
}
Jeder Versuch für dieselbe SMS trägt denselben Header Idempotency-Key, damit du Wiederholungen verwerfen kannst. Läuft ein Senden in eine Zeitüberschreitung, trifft auf 429 oder 5xx oder verliert die Verbindung, versucht Fwrd es bis zu zweimal erneut. Jede 2xx-Antwort innerhalb von 15 Sekunden gilt als zugestellt, Umleitungen (Redirects) werden abgelehnt. Schalte in den Einstellungen von Fwrd „Include Who Sent It“ (Absender anzeigen) ein und wähle in der Aktion von Fwrd „Absender:in“, dann bekommt der Body zusätzlich ein Feld sender. Das hilft, wenn mehrere Dienste dieselbe Nummer anschreiben.
Was diese Einrichtung nicht kann
- Eine Nummer bedient einen Lauf auf einmal. Parallele Jobs, die Codes für dieselbe Nummer anfordern, können den Code des anderen lesen. Reihe den Anmeldeschritt in eine Warteschlange ein oder ordne jeden Code dem Lauf zu, der ihn angefordert hat.
- Der kostenlose Plan deckt 15 Codes pro Monat ab. Danach bleiben Codes bis zum nächsten Monat aus, und ausgelastete Pipelines erreichen das schnell. Fwrd Pro hebt das Limit auf und kostet in den USA $4.99 im Monat oder $29.99 im Jahr.
- Es kann nur empfangen. Fwrd kann für dein CI keine SMS vom iPhone senden.
- Das Telefon bleibt eingeschaltet und online. Nach einem Neustart wartet die Weiterleitung, bis jemand es einmal entsperrt, und ein iPhone, das drei Tage lang nicht entsperrt wird, startet sich selbst neu. Halte es geladen und für jemanden erreichbar.
- Die Aktion von Fwrd erreicht jedes aktive Ziel. Leitet dasselbe Telefon auch woanders hin weiter, nimm stattdessen „Forward Message to Destination“ (Nachricht an Ziel weiterleiten) und wähle den Webhook.
- Nur neue SMS. Codes, die vor der Automation ankamen, werden nicht gesendet.
Wenn du Codes für Menschen statt für Pipelines brauchst, zeigt Codes für 2FA im Team über Slack teilen diese Einrichtung.
Fragen zu SMS-Codes in der Automatisierung
Kann Selenium oder Playwright einen SMS-Code direkt lesen?
Nein. Browser-Automatisierung sieht die Nachrichten eines Telefons nicht. Etwas muss den Text zuerst vom Telefon holen, etwa eine Automation in „Kurzbefehle“, bei der Fwrd ihn an einen Webhook postet, den dein Skript abfragt.
Laufen die Codes über die Server von Fwrd?
Nein. Fwrd hat kein Konto und keinen eigenen Server. Jede SMS geht vom iPhone direkt an deinen HTTPS-Endpunkt, und die Adresse bleibt im Schlüsselbund des iPhones.
Funktioniert es bei Absendern mit Kurznummern?
Ja. Die Automation vergleicht, was in der SMS steht, nicht wer sie gesendet hat. Codes von Kurznummern, die nicht in deinen Kontakten stehen, passen also trotzdem zu einem Wort wie code.
Kann ich einen n8n-Workflow als Endpunkt nutzen?
Ja. Füge einen Webhook-Node mit POST hinzu, nimm seine Produktions-URL und veröffentliche den Workflow, sonst antwortet er nicht. iPhone-SMS an Zapier, Make oder n8n senden enthält die Schritte.
SMS-Codes dort, wo dein CI sie lesen kann?
Fwrd postet jede passende SMS von einem Team-iPhone als JSON an deinen eigenen HTTPS-Webhook, ohne Konto und ohne Fwrd-Server dazwischen. 15 Weiterleitungen pro Monat sind kostenlos.
Kostenlos für 15 Weiterleitungen im Monat. Pro hebt die Grenzen für Weiterleitungen und Filter auf und bringt eine Liste „Never Forward“ (Nie weiterleiten) mit, für $4.99 im Monat oder $29.99 im Jahr, mit einem 7-tägigen kostenlosen Probezeitraum im Jahresplan für berechtigte Kunden.
iPhone · iOS 26 oder neuer