Version Updates

Stay up to date on the latest Terminus version.

Discuss in our Forum Discuss in Slack


The recent 2.x releases of Terminus signify a major version upgrade, which may not be backwards-compatible with scripts written for Terminus 1.x. For more information, refer to the Terminus 2.0 documentation.

Update to the Current Release 3.0.7

Update Standalone Terminus

If you used the standalone Terminus PHAR installation, update to the newest version with:

terminus self:update

Note that the self:update command is only available for the standalone Terminus installation. Refer to the command documentation to see the available options.

Update Terminus Installer PHAR

To update the Composer-managed version of Terminus that was installed with the Terminus Installer PHAR, navigate to the directory where Terminus was originally installed, then run the follwoing command:

curl -O && php installer.phar update

Update Terminus Homebrew Installation

If you used the Homebrew installation installation, update to the newest version with the following command:

brew upgrade pantheon-systems/external/terminus


Terminus uses Semantic versioning. Be sure to fully test compatibility with existing configurations before upgrading to new major releases.

PHP Version Compatibility Matrix

PHP VersionTerminus 3.xTerminus 2.x


Nothing to install or update

For Composer-managed Terminus installations, if the update command above returns an output that indicates no updates were found, delete the existing Terminus version (e.g. \$HOME/terminus) and re-run the following install command:

rm -rf $HOME/terminus
mkdir $HOME/terminus
cd $HOME/terminus
curl -O
php installer.phar install

Self:update not defined

The self:update command is only available for standalone Terminus installed using the standalone Terminus PHAR. If self:update returns a not defined error, use the Terminus Installer PHAR update instructions above.

EOL Timeline

Each major and minor version of Terminus is fully supported for one year from the release of the subsequent version. During the supported period, serious bugs and security issues that have been reported are fixed in patch releases. Refer to the documentation on Semantic Versioning for more information on versioning.

After this period, the version will reach End Of Life (EOL), and will no longer be supported. We recommend you update Terminus far in advance of the EOL schedule, so that regressions in new versions can be reported and patched in time.

VersionRelease DateEOL Date
3.0.7March 29, 2022
3.0.6February 18, 2022March 29, 2023
3.0.5February 08, 2022February 18, 2023
3.0.4January 18, 2022February 08, 2023
3.0.3December 17, 2021January 18, 2023
3.0.2December 17, 2021December 17, 2022
3.0.1December 08, 2021December 17, 2022
3.0.0December 08, 2021December 08, 2022
VersionRelease DateEOL Date
2.6.6February 07, 2022
2.6.5December 17, 2021February 07, 2023
2.6.4December 06, 2021December 17, 2022
2.6.3December 03, 2021December 08, 2022
2.6.2October 18, 2021December 03, 2022
2.6.1August 04, 2021October 18, 2022
2.6.0June 04, 2021August 04, 2022
2.5.0January 20, 2021June 04, 2022
2.4.1September 08, 2020January 20, 2022
2.4.0June 20, 2020September 08, 2021
2.3.0January 11, 2020June 20, 2021
2.2.0 or earlierSeptember 26, 2019January 11, 2021



  • Change alias for local:commitAndPush to lcp to avoid aliases conflict (#2341)
  • Make framework value more human friendly for site:info command (#2351)


  • Check upstream updates before getting upstream status to get composer updates info (#2349)
  • Fix bug that didn't allow merging a multidev env with only numbers in the name (#2350)



  • Make upstream status report on composer updates (#2338)


  • Fix bug where self:console was not working because psy/psysh was a dev dependency. (#2332)
  • Pin to league/container ^3 to avoid fatal errors (#2337)



  • Added the --element usage for backup:create (#2317)
  • Add GitHub Pull Request Template and move Issue Template (#2325)


  • Replace git:// urls with https:// urls (#2319)


  • Fix bug where site:list was unable to properly filter by tags when part of site team (#2316)
  • Fix bug where --simulate option was being ignored (#2321)
  • Fix bug where site:delete command always fails (#2324)
  • Fix bug where self:update reports it only works with the phar version of Terminus (#2328)



  • Added self:plugin:migrate command (#2299)
  • Add php 8.1 support (#2295)


  • Set memory limit with ini_set() rather than /usr/bin/env -S (#2303)
  • Optimize Terminus phar build (#2307)
  • Do not require composer/composer as a direct dependency of Terminus (#2308)
  • Avoid dependency on ext-curl in Terminus (#2310)
  • Improve error verbosity in Sites::get() (#2311)
  • Retry API request on "Connection refused" and "Operation timed out" errors (#2313)


  • self:update command should now work when plugins have been installed (#2297)
  • Fix filestore scandir problem (#2309)



  • Fix PHP 7.4 regressions and revert PHP 8.1 support. PHP 8.1 support will be restored in a future release (#2292)



  • Add aliases for Terminus plugin commands (#2274)
  • Add PHP 8.1 support (#2284)


  • Allow upstream:updates:apply to default to dev environment if no environment explicitly provided (#2282)


  • Change env:wake to use https on the platform domain (#2283)
  • Minor fixup to help output of dashboard:view and self:console (#2277)



  • Change file name in deploy script (#2270)



  • Look up host for 'terminus drush' / 'terminus wp' commands via an alternate nameserver, if selected (#2253)
  • Typehint param and return value in lookupHostViaAlternateNameserver (#2253)
  • Symfony Library updates (5.x)
  • Adds plugin manager, contributed by Ed Reel (#2054)
    • New command self:plugin:install to install Terminus plugins.
    • New command self:plugin:list to list installed Terminus plugins.
    • New command self:plugin:search to locate Terminus plugins to install.
    • New command self:plugin:uninstall to uninstall Terminus plugins.
    • New command self:plugin:update to update already-installed Terminus plugins.


  • Update auth:login command so that to not produce a false negative on successful login (#2231)
  • Update CODEOWNERS per 2.x branch (#2243)
  • Update composer dependencies version variable in post-update script (#2239)
  • Update phar builder and package dependencies (#2255)
  • Show dependencies warning if folder does not exist (#2239)
  • Implement cleanupOldDependenciesFolders function after running dependencies update (#2239)
  • Update terminusPluginsDependenciesVersion var comment (#2239)
  • Update warning message text (#2239)
  • Print warning only if terminus has plugins (#2239)
  • Improve hasPlugins, factory, and cleanupOldDependenciesFolders functions (#2239)
  • Return json_decode as array (#2239)
  • Restore openUrl function from LocalMachineHelper (#2248)
  • Draft debian linux packaging (#2255, #2238)
  • Update version compatibility check and messaging (#2267)


  • Remove code related to D9ify (#2246)


  • Fix SavedTokens::getData() on auth:login (#2231)
  • Fix failing SSHKeyCommandsTest (#2231)
  • Fix fatal error in Environment::cacheserverConnectionInfo() (#2242)
  • Fix issue with Phar builder as well as DEB dependencies (#2255)
  • Fix coding standards (#2239)


  • Replace git:// urls with https:// urls (#2318)
  • Fix bug where site:delete command always fails (#2323)


  • Change env:wake to use https on the platform domain (#2287)


  • Fix Terminus for PHP 5.5, 5.6, and 7.0 (#2264)



  • Updated self:update command to support new options from upstream library (#2223)


Fixed backup:automatic:enable --keep-for parameter not being respected



  • daily-ttl and weekly-ttl options have been added to Backups::setBackupSchedule(). (#2133)
  • keep-for option has been added to backup:automatic:schedule. (#2133)
  • expiry information added to the output of backup:automatic:info. (#2133)



  • getUsername added to Binding model to retrieve the username for a connection. (#2107)


  • upstream:updates:apply now applies Composer changes in addition to upstream changes. (#2089)
  • Connection usernames are no longer "pantheon" but derived from API data. (#2107)


  • Fixed issue where plan:info receives a 404 error. (#2098)



  • The DrushRCEditor class has been renamed to DrushRcClass. (#2083)
  • Upstreams can be ID'd by labels, product_ids, and machine_names in addition to ids. (#2086)


  • The DrushRCEditor class no longer emits deprecation warnings. (#2083)
  • tag:add now rejects empty tags. (#2085)



  • New option --no-db added to multidev:create which will skip the duplication of the database from the source environment. (#2050)
  • New option --no-files added to multidev:create which will skip the duplication of files from the source environment. (#2050)
  • New option no-db added to Environments::create which will skip the duplication of the database from the source environment. (#2050)
  • New option no-files added to Environments::create which will skip the duplication of files from the source environment. (#2050)
  • New method Upstream::hasCode() returns a bool indicating whether the environment has code or not. (#2056)


  • Request::download($url, $target) now accepts directories in addition to files as its $target parameter. (#2053)
  • The backup:get command's --to option now accepts directories in addition to files. (#2053)
  • Return type of Redis::disable() has changed to a Workflow model. (#2055)
  • Return type of Redis::enable() has changed to a Workflow model. (#2055)
  • Return type of Solr::disable() has changed to a Workflow model. (#2055)
  • Return type of Solr::enable() has changed to a Workflow model. (#2055)
  • Return type of Environment::disableHttpsCertificate() has changed to a Workflow model. (#2055)


  • Removed now-redundant Backup::serializeWithURL() function. Use Backup::serialize() instead. (#2042)
  • Removed obsolete Environment::convergeBindings() method. (#2055)
  • Removed obsolete Site::converge() method. (#2055)


  • Drush script is no longer included when generating Drush aliases. (#2076)
  • PHP notice is not emitted when using upstream:updates:status on an environment without code. (#2056)
  • PHP notice is not emitted when using UpstreamStatus::hasUpdates() on an environment without code. (#2056)