Features & tools for Azure Cloud Shell

Azure Cloud Shell is a browser-based shell experience to manage and develop Azure resources.

Cloud Shell offers a browser-accessible, preconfigured shell experience for managing Azure resources without the overhead of installing, versioning, and maintaining a machine yourself.

Cloud Shell allocates machines on a per-request basis and as a result machine state doesn't persist across sessions. Since Cloud Shell is built for interactive sessions, shells automatically terminate after 20 minutes of shell inactivity.

Azure Cloud Shell runs on Azure Linux, Microsoft's Linux distribution for cloud infrastructure edge products and services. Microsoft internally compiles all the packages included in the Azure Linux repository to help guard against supply chain attacks.


Secure automatic authentication

Cloud Shell securely and automatically authenticates account access for the Azure CLI and Azure PowerShell.

$HOME persistence across sessions

To persist files across sessions, Cloud Shell walks you through attaching an Azure file share on first launch. Once completed, Cloud Shell will automatically attach your storage (mounted as $HOME\clouddrive) for all future sessions. Additionally, your $HOME directory is persisted as an .img in your Azure File share. Files outside of $HOME and machine state aren't persisted across sessions. Learn more about Persisting files in Cloud Shell.

Use best practices when storing secrets such as SSH keys. You can use Azure Key Vault to securely store and retrieve your keys. For more information, see Manage Key Vault using the Azure CLI.

Azure drive (Azure:)

PowerShell in Cloud Shell provides the Azure drive (Azure:). You can switch to the Azure drive with cd Azure: and back to your home directory with cd ~. The Azure drive enables easy discovery and navigation of Azure resources such as Compute, Network, Storage etc. similar to filesystem navigation. You can continue to use the familiar Azure PowerShell cmdlets to manage these resources regardless of the drive you are in. Any changes made to the Azure resources, either made directly in Azure portal or through Azure PowerShell cmdlets, are reflected in the Azure drive. You can run dir -Force to refresh your resources.

Screenshot of an Azure Cloud Shell being initialized and a list of directory resources.

Manage Exchange Online

PowerShell in Cloud Shell contains the ExchangeOnlineManagement module. Run the following command to get a list of Exchange cmdlets.

Get-Command -Module ExchangeOnlineManagement

For more information about using the ExchangeOnlineManagement module, see Exchange Online PowerShell.

Deep integration with open source tooling

Cloud Shell includes preconfigured authentication for open source tools such as Terraform, Ansible, and Chef InSpec. For more information, see the following articles:

Preinstalled tools

The most commonly used tools are preinstalled in Cloud Shell.

Azure tools

Cloud Shell comes with the following Azure command-line tools preinstalled:

Tool Version Command
Azure CLI 2.55.0 az --version
Azure PowerShell 11.1.0 Get-Module Az -ListAvailable
AzCopy 10.15.0 azcopy --version
Azure Functions CLI 4.0.5390 func --version
Service Fabric CLI 11.2.0 sfctl --version
Batch Shipyard 3.9.1 shipyard --version
blobxfer 1.11.0 blobxfer --version

You can verify the version of the language using the command listed in the table. Use the Get-PackageVersion to see a more complete list of tools and versions.

Linux tools

  • bash
  • zsh
  • sh
  • tmux
  • dig

Text editors

  • Cloud Shell editor (code)
  • vim
  • nano
  • emacs

Source control

  • Git
  • GitHub CLI

Build tools

  • make
  • maven
  • npm
  • pip




Preinstalled developer languages

Cloud Shell comes with the following languages preinstalled:

Language Version Command
.NET Core 7.0.400 dotnet --version
Go 1.19.11 go version
Java 17.0.8 java --version
Node.js 16.20.1 node --version
PowerShell 7.4.0 pwsh -Version
Python 3.9.14 python --version
Ruby 3.1.4p223 ruby --version

You can verify the version of the language using the command listed in the table.

Next steps