Bug Report
Describe the current, buggy behavior
wp core download results in Success. Running wp core verify-checksums fails. The output is a long list of files that "doesn't exist" followed by a long list of files that "should not exist". The "should not exist" files are actually the truncated filenames of the files that don't exist each at exactly 100 chars of the filepath. See the full output in the last section.
Describe how other contributors can replicate this bug
mkdir wp-test && cd wp-test
wp core download
wp core verify-checksums
Describe what you would expect as the correct outcome
The expected outcome is
Success: WordPress installation verifies against checksums.
Let us know what environment you are running this on
OS: Linux 6.1.0-41-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.158-1 (2025-11-09) x86_64
Shell: /bin/bash
PHP binary: /usr/bin/php8.3
PHP version: 8.3.30
php.ini used: /etc/php/8.3/cli/php.ini
MySQL binary: /usr/bin/mariadb
MySQL version: mariadb from 11.4.10-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper
SQL modes:
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: phar:///usr/local/bin/wp
WP-CLI packages dir:
WP-CLI cache dir: /home/gregor/.wp-cli/cache
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.12.0
Provide a possible solution
WP-CLI extracts the core .tar.gz via PHP's PharData, which reads only the legacy ustar 100-byte name field and ignores the GNU/PAX long-name extension the WordPress tarball uses, silently truncating any path over 100 chars and exiting 0, leaving an incomplete core that nothing flags until an an integrity scan runs. The missing files are autoloaded interfaces, so the install works until something invokes the AI client.
Possible fixes:
- switch core extraction to the .zip build that has no 100 char path limit.
- alternatively prefer the system tar and use PharData only as a last ressort fallback
- in any case, validate after extraction. Currently the user has no idea his installation is broken and that is actually the worse part.
Provide additional context/Screenshots
$ wp core verify-checksums
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/GenerateTextApiBasedProviderAvailability.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/ListModelsApiBasedProviderAvailability.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/Contracts/ApiBasedModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/AbstractApiBasedModelMetadataDirectory.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/ImageGeneration/Contracts/ImageGenerationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/ImageGeneration/Contracts/ImageGenerationOperationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/TextToSpeechConversion/Contracts/TextToSpeechConversionModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/TextToSpeechConversion/Contracts/TextToSpeechConversionOperationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/SpeechGeneration/Contracts/SpeechGenerationOperationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/SpeechGeneration/Contracts/SpeechGenerationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/VideoGeneration/Contracts/VideoGenerationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/VideoGeneration/Contracts/VideoGenerationOperationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/TextGeneration/Contracts/TextGenerationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Models/TextGeneration/Contracts/TextGenerationOperationModelInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Contracts/ProviderWithOperationsHandlerInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/Http/Contracts/WithRequestAuthenticationInterface.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/OpenAiCompatibleImplementation/AbstractOpenAiCompatibleImageGenerationModel.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/OpenAiCompatibleImplementation/AbstractOpenAiCompatibleTextGenerationModel.php
Warning: File doesn't exist: wp-includes/php-ai-client/src/Providers/OpenAiCompatibleImplementation/AbstractOpenAiCompatibleModelMetadataDirectory.php
Warning: File doesn't exist: wp-includes/php-ai-client/third-party/Http/Discovery/Strategy/CommonPsr17ClassesStrategy.php
Warning: File doesn't exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/PuliUnavailableException.php
Warning: File doesn't exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/StrategyUnavailableException.php
Warning: File doesn't exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/DiscoveryFailedException.php
Warning: File doesn't exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/ClassInstantiationFailedException.php
Warning: File doesn't exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/NoCandidateFoundException.php
Warning: File should not exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/StrategyUnavailableExceptio
Warning: File should not exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/PuliUnavailableException.ph
Warning: File should not exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/NoCandidateFoundException.p
Warning: File should not exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/DiscoveryFailedException.ph
Warning: File should not exist: wp-includes/php-ai-client/third-party/Http/Discovery/Exception/ClassInstantiationFailedExc
Warning: File should not exist: wp-includes/php-ai-client/third-party/Http/Discovery/Strategy/CommonPsr17ClassesStrategy.p
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Models/VideoGeneration/Contracts/VideoGenerationMo
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Models/VideoGeneration/Contracts/VideoGenerationOp
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Models/ImageGeneration/Contracts/ImageGenerationMo
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Models/ImageGeneration/Contracts/ImageGenerationOp
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Models/TextToSpeechConversion/Contracts/TextToSpee
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Models/TextGeneration/Contracts/TextGenerationOper
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Models/TextGeneration/Contracts/TextGenerationMode
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Models/SpeechGeneration/Contracts/SpeechGeneration
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/OpenAiCompatibleImplementation/AbstractOpenAiCompa
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Http/Contracts/WithRequestAuthenticationInterface.
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/AbstractApiBasedModelMetada
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/GenerateTextApiBasedProvide
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/ListModelsApiBasedProviderA
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/Contracts/ApiBasedModelInte
Warning: File should not exist: wp-includes/php-ai-client/src/Providers/Contracts/ProviderWithOperationsHandlerInterface.p
Error: WordPress installation doesn't verify against checksums.
Bug Report
Describe the current, buggy behavior
wp core downloadresults inSuccess. Runningwp core verify-checksumsfails. The output is a long list of files that "doesn't exist" followed by a long list of files that "should not exist". The "should not exist" files are actually the truncated filenames of the files that don't exist each at exactly 100 chars of the filepath. See the full output in the last section.Describe how other contributors can replicate this bug
Describe what you would expect as the correct outcome
The expected outcome is
Success: WordPress installation verifies against checksums.
Let us know what environment you are running this on
Provide a possible solution
WP-CLI extracts the core .tar.gz via PHP's PharData, which reads only the legacy ustar 100-byte name field and ignores the GNU/PAX long-name extension the WordPress tarball uses, silently truncating any path over 100 chars and exiting 0, leaving an incomplete core that nothing flags until an an integrity scan runs. The missing files are autoloaded interfaces, so the install works until something invokes the AI client.
Possible fixes:
Provide additional context/Screenshots