You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
False positives for VCS plugin and theme installs #537
The code that detects VCS plugin installs is buggy, often on sites that don't have any plugins installed using git checkout the flag --include-vcs is required to update plugins.
For example wp-piwik includes a empty .gitignore file and I think this might trigger the need for --include-vcs?
Describe what you would expect as the correct outcome
Better detection of git checked out plugins.
Let us know what environment you are running this on
wp cli info
OS: Linux 6.12.100+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.100-1 (2026-07-30) x86_64
Shell: /bin/bash
PHP binary: /usr/bin/php8.3
PHP version: 8.3.33
PHP memory limit: -1
php.ini used: /etc/php/8.3/cli/php.ini
MySQL binary: /usr/bin/mariadb
MySQL version: mariadb from 11.8.6-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper
SQL modes: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
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: /home/weblog/.wp-cli/packages/
WP-CLI cache dir: /home/weblog/.wp-cli/cache
WP-CLI global config: /home/weblog/.wp-cli/config.yml
WP-CLI project config:
WP-CLI version: 2.13.0-alpha-5315443
It checks for .git folders, not .gitignore files. There is a automatic_updates_is_vcs_checkout filter in there though, so maybe a plugin of yours or your hosting provider uses that to exclude more plugins more strictly. I'd recommend looking into that. Trying --skip-plugins might help too.
wp plugin update --all
Warning: woocommerce: Skipped update because a VCS checkout was detected. Use --include-vcs to override.
Warning: wordpress-seo: Skipped update because a VCS checkout was detected. Use --include-vcs to override.
Error: No plugins updated.
Because WP_Automatic_Updater::is_vcs_checkout() from WordPress core said so. It's not WP-CLI. Again, that function has a filter, so it's possible that something is hooking into this filter to make the check more strict.
Try using --skip-plugins as I suggested above.
If it's coming from a mu-plugin (for example one added by your hosting provider), you could also try something like this (untested):
Activity
swissspidy commentedon Aug 3, 2026
Thanks for your report!
We use the
is_vcs_checkout()function provided by WordPress for this detection, as defined here:https://github.com/WordPress/wordpress-develop/blob/5bc2c6228c78ca17552a906c2bb4e47a97e87bf8/src/wp-admin/includes/class-wp-automatic-updater.php#L127-L179
It checks for
.gitfolders, not.gitignorefiles. There is aautomatic_updates_is_vcs_checkoutfilter in there though, so maybe a plugin of yours or your hosting provider uses that to exclude more plugins more strictly. I'd recommend looking into that. Trying--skip-pluginsmight help too.And if there's a flaw in
is_vcs_checkout(), it can be reported at https://core.trac.wordpress.org/chriscroome commentedon Aug 3, 2026
Thanks @swissspidy that is really helpful, next time I hit this issue I'll report it upstream.
swissspidy commentedon Aug 3, 2026
Sounds good, I'm closing this for now then
chriscroome commentedon Aug 5, 2026
Here is an example of this issue:
Neither plugin has a top-level
.gitdirectory:Why does WP-CLI think these plugins were installed using
git?swissspidy commentedon Aug 5, 2026
Because
WP_Automatic_Updater::is_vcs_checkout()from WordPress core said so. It's not WP-CLI. Again, that function has a filter, so it's possible that something is hooking into this filter to make the check more strict.Try using
--skip-pluginsas I suggested above.If it's coming from a mu-plugin (for example one added by your hosting provider), you could also try something like this (untested):
test.phpfile:Then run
wp --require=test.php plugin update --all