Eric L. Barnes stellte Laravel Vet am 15. September 2026 vor. Das Beta-Paket des Laravel-Teams zeigt Dateien an, die eine Installation oder ein Update nach vendor/ schreiben würde, und speichert freigegebene Paketstände in vet.json. Das Composer-Plugin läuft nach Installationen und stoppt ein Update, bevor neue Dateien geschrieben werden. Das Verfahren folgt dem Prinzip von cargo vet aus der Rust-Welt. Bereits freigegebene Pakete bleiben unbehelligt, geänderte Pakete werden erneut geprüft.
composer require laravel/vet --dev
./vendor/bin/vet --init
composer update
./vendor/bin/vetVet kann jeden Paket-Diff an einen Coding-Agenten auf dem lokalen Rechner übergeben. Unterstützt werden unter anderem Claude Code, Codex, Gemini und opencode. Der Agent meldet PASS, FAIL, WARN oder SKIP. PASS bedeutet, dass die Prüfung ohne gemeldeten Angriff abgeschlossen wurde. FAIL nennt eine Datei und den Grund für das Problem. WARN weist auf eine unvollständige Prüfung hin, etwa wegen einer zu großen Datei, nicht lesbarer Binärdaten oder einer fehlenden Antwort. Bei SKIP wurden keine Dateien an den Agenten gesendet, weil sich nichts geändert hat oder die Paketdateien nicht gelesen werden konnten. Ein nicht vertrauenswürdiges Paket führt zu einem Exit-Status ungleich null und kann dadurch einen Build stoppen. Das Tool funktioniert mit jedem Projekt, das composer.json besitzt, darunter Laravel, Symfony, WordPress und reines PHP.
Voraussetzung ist PHP 8.4 oder neuer. Vet wird als Entwicklungsabhängigkeit installiert. Die Ersteinrichtung stuft die bereits in vendor/ vorhandenen Pakete als vertrauenswürdig ein und schreibt sie in vet.json. Im beschriebenen Lauf enthielt die Datei 125 Pakete. Dieser Schritt übernimmt den Zustand der Dateien auf der Festplatte, ohne ihn zu prüfen. Künftige Updates werden mit dieser Grundlage verglichen.
Ein Beispielupdate änderte carbonphp/carbon-doctrine-types von 3.1.0 auf 3.2.0 und betraf zwei Dateien. In src/Carbon/Doctrine/DateTimeImmutableType.php wechselte der Rückgabetyp von DateTimeImmutable zu CarbonImmutable. In src/Carbon/Doctrine/DateTimeType.php änderte er sich von DateTime zu Carbon. Vet stoppte den Schreibvorgang und verwies für die Detailprüfung auf ./vendor/bin/vet -v. Für eine agentengestützte Prüfung dient ./vendor/bin/vet.
Bei einem weiteren Lauf prüfte Claude drei Pakete mit zusammen 58.1 KB Änderungen. acme/logger wechselte von 1.2.0 auf 2.0.0 und änderte zwölf Dateien. Der Agent meldete FAIL, weil src/Ship.php .env las und den Inhalt an telemetry.example.com übermittelte. Bei acme/tooling führte das Update von 4.1.0 auf 4.2.0 zu acht geänderten Dateien. Vet meldete WARN, weil zwei Befehle hinzukamen und der Agent die 612,4 KB große Datei resources/schema.php nicht las. Für carbonphp/carbon-doctrine-types mit zwei geänderten Dateien lautete das Ergebnis PASS. Der Agent bewertete dort zwei engere Rückgabetypen.
PASS-Pakete wählt Vet standardmäßig aus. Nach der Prüfung können Entwickler die Auswahl anpassen und mit Enter bestätigen. Die Agentenberichte ändern vet.json nicht automatisch. Vet speichert die Datei neben composer.json, und der Beitrag empfiehlt, sie ins Repository einzuchecken. Ein Eintrag nutzt Schema 4 und enthält eine Paketversion mit Hash. Das Beispiel nennt Version 3.2.1 und den Hash tree-v2:0f158f3b909fc01e691ed5f5121186056232b049031e7d3a914676d49881ece5. Der Hash umfasst jede Datei des Pakets. Eine Dateiänderung löst deshalb auch bei unveränderter Versionsnummer eine neue Prüfung aus. Ein Build schlägt fehl, bis jedes Paket freigegeben wurde.
Der Beitrag ordnet Vet in aktuelle Supply-Chain-Vorfälle ein. Genannt werden die Malware-Sperren und Abhängigkeitsrichtlinien von Composer 2.10 sowie ein Axios-npm-Paket, das einen Remote-Access-Trojaner auslieferte. Vet befindet sich noch in der Beta-Phase, daher kann sich das Verhalten vor einer stabilen Version ändern. Als zusätzliche Maßnahme nennt der Artikel Heimdall mit seiner Mindestwartezeit für Composer-Abhängigkeiten. Die Dokumentation liegt im GitHub-Repository laravel/vet.




Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.