Your first ten minutes with Shell
- Set up Cloud Shell once for your account at shell.azure.com, choosing Bash or PowerShell and how to keep your files.
- Install the Benchdog Shell extension in VS Code, or the Benchdog Shell desktop app, which brings the
benchdog shellcommand with it. - Open the Shell panel in the activity bar and sign in once through the browser, or turn on
benchdogShell.useAzureClito use your existingaz login. - Click Cloud Shell (Bash) or Cloud Shell (PowerShell), watch each step while it starts, and type as you would at shell.azure.com.
- Click a subscription in the Subscriptions group to make it current in the tab, and use Add Command... to keep a command you run often.
- In your own terminal, run
benchdog shellto open Cloud Shell there, and type exit to leave.
How to, before you buy, and when something goes wrong
How do I
How do I open Cloud Shell in VS Code?
Open the Shell panel in the activity bar and click Cloud Shell (Bash) or Cloud Shell (PowerShell), or pick Benchdog: Cloud Shell from the terminal's + menu. The tab shows each step while Cloud Shell starts, then the shell itself, with colours, Tab completion, the arrows and Ctrl+C working as they do at shell.azure.com. Keys typed while it starts are kept and sent once it is ready.
Open Cloud Shell uses the shell you chose when you set Cloud Shell up. Set benchdogShell.defaultShell to Bash or PowerShell to change that.
How do I open Cloud Shell in my own terminal?
Run benchdog shell. It signs in as you, says each step on standard error, and hands your terminal over to Cloud Shell until you type exit. benchdog shell --bash or benchdog shell --pwsh picks the shell, whatever you chose in Cloud Shell. Add --cli to sign in through your az login, and --tenant <id> for another tenant you belong to.
Every key goes to Cloud Shell as it is typed, the window's size is checked twice a second so vim and top fit, and your terminal's settings are put back when the shell closes. The command needs a real terminal, so it cannot run with its input or output redirected.
How do I switch subscription?
The Subscriptions group lists the subscriptions your account can see, enabled ones first. Click one in VS Code, or double-click it or press Enter in the desktop app, and the active terminal runs az account set --subscription <id>, and in a PowerShell Cloud Shell Set-AzContext too, so az and the Az module agree. Right-click a subscription to copy its id, and refresh the list with the refresh button or F5.
In a local terminal, the same click runs az account set only, against your own az login.
How do I save a command I run often?
Click Add Command... in the Saved commands group and type a single line, such as az group list --output table, with a short name if you like. Click the command to paste it into the active terminal without running it, or press its play button to run it. In the desktop app, + or Ctrl+Shift+N adds one, double-click or Enter pastes it, Run in this tab or Ctrl+Shift+R runs it, F2 edits and Delete removes it after a Yes.
A saved command is one line of up to 4,000 characters, so join steps with && in Bash or ; in PowerShell. Saved commands are kept as plain text, in VS Code's storage or in shell-desktop.json in the Benchdog folder, so Benchdog asks before saving one that looks as if it holds a password, key or token.
How do I open a terminal on my own machine?
In VS Code, click Local Terminal. It opens a VS Code terminal and runs az account show --output table, so you see who az is signed in as. Change or clear benchdogShell.localStartCommand to run something else, or nothing, when it opens.
In the desktop app, Local terminal or Ctrl+Shift+L opens a real terminal on this machine in your home folder: PowerShell 7, Windows PowerShell or cmd on Windows, and your login shell on Mac and Linux. It needs no Benchdog sign-in, and az there uses your own az login.
How do I copy, paste and scroll in the desktop app?
Drag to select, then press Ctrl+Shift+C or Ctrl+Insert, or right-click and choose Copy. Text that wrapped is copied as one line. Press Ctrl+Shift+V or Shift+Insert, or right-click and choose Paste, and the paste is marked as a paste when the shell asks, so several lines are not run one by one.
The wheel, or Shift+Page Up and Shift+Page Down, scrolls back through the last 3,000 rows, and typing goes back to the bottom. In vim, less and other full screen programs the wheel sends arrow keys instead. Every Ctrl key goes to the shell, which is why the window's own shortcuts all use Ctrl+Shift.
How do I use Cloud Shell in another tenant?
Set benchdogShell.tenant in VS Code, or the tenant in the desktop app's Settings, to the tenant id, and Cloud Shell and the subscriptions list open there. At the command line, run benchdog shell --tenant <id>. Empty means your home tenant.
How do I open more than one tab?
Open as many tabs as you like, with Bash and PowerShell side by side. Each is its own terminal on your one Cloud Shell, so they share your clouddrive files. In the desktop app, Ctrl+Shift+B opens Bash, Ctrl+Shift+P opens PowerShell, Ctrl+Shift+T opens the shell you chose in Cloud Shell, and Ctrl+Shift+W closes the tab on show, asking first while its shell is open. Closing the window asks first too, and every tab closes with it.
Before you buy
What does Benchdog Shell need set up?
Cloud Shell needs setting up once per account, in the browser at shell.azure.com: choose Bash or PowerShell, and how to keep your files. After that the browser is not needed again, and Benchdog opens the same Cloud Shell signed in as you. Local terminals need nothing from Benchdog, only the Azure CLI on your machine if you want az there.
Is it the same Cloud Shell as shell.azure.com?
Yes. Benchdog starts your own Cloud Shell console, so you get your clouddrive files and every tool Cloud Shell has, including az and, in PowerShell, the Az module. Cloud Shell runs on Linux, so if your account still has an old Windows console, Benchdog replaces it with a Linux one when a tab opens. Cloud Shell's own idle timeout still applies, and when it ends the tab says so.
Has Benchdog Shell been checked against a live Cloud Shell yet?
Not yet, which is why it is marked as building. The terminal, the tabs, the subscriptions, the saved commands, the local terminals and the benchdog shell command have been checked against a stand-in Cloud Shell bridged to a real shell, including vim, top, colours, resizing and pasting, and the terminal emulator is tested on Windows, Mac and Linux. A check against a live Cloud Shell is the last step before the tool moves to available.
What does Benchdog see or keep?
Cloud Shell runs as you, with a token the engine asks for and never shows, logs or hands to the VS Code extension. What you type and what the shell prints are never written to the diagnostics log or anywhere else. Keys go to Cloud Shell one request at a time, in the order typed, so a fast paste never arrives mixed up. The only thing kept is your saved commands, as plain text, which is why Benchdog warns before saving one that looks like a secret.
Can the AI Assistant run commands for me?
Yes. Open the AI Assistant beside the tabs and ask for the az command you need, or what the output on screen means. It sees the tab on show, its newest lines, your subscriptions and your saved commands. It can run a command in the tab and read what came back, paste one without running it, switch subscription, open a shell or save a command, and running, switching and saving wait for you to press Run. Bring your own Anthropic or OpenAI key, and what it sends is scrubbed of secrets. It cannot read the output of a local terminal, only a Cloud Shell tab.
Can I try it before I buy?
Yes. Every tool has a thirty day trial with every feature, and no card. Ask for one at benchdog.dev/trial with your name and email, and the trial licence arrives by email, as a line to paste and a benchdog.licence file. One trial per person covers every tool at once.
What does one licence cover?
One licence is for one person and covers the VS Code extension, the desktop app and the benchdog command, on every machine that person works from. There is no machine limit and no server count. Buying another tool reissues your licence with that tool added.
The licence shows whose it is: your name and email appear in each tool's About and account menu.
What happens when my subscription ends?
The last version released while you were paid keeps working. Only updates stop. A licence is checked offline and never expires a version it covers, so nothing stops working the day your year ends.
Which operating systems and SQL Server versions does it support?
The VS Code extensions run in VS Code 1.95 or later on Windows, Linux and Mac. The desktop apps and the benchdog command are single programs for Windows (x64), Mac (Apple silicon) and Linux (x64), with no .NET install needed. The SQL tools work with SQL Server 2017 or later, Azure SQL Database and Azure SQL Managed Instance.
Does Benchdog send my data anywhere?
No. The engine runs on your machine, reads your vaults and databases as you, and keeps the results with you. A tool contacts benchdog.dev only when you click something that needs it, such as asking for your licence, and never in the background. Licences are checked offline.
Can a tool damage my database?
Every change a tool makes runs in one transaction with XACT_ABORT on, so it all happens or none of it does. A SQL Schema Compare deploy, a SQL Data Comparer sync and a SQL Data Filler fill are each one transaction, and SQL Data Scrambler scrambles each table in one. The scripts the tools write for you to run in SSMS or sqlcmd are wrapped the same way and roll back if any batch fails. SQL Multi Runner runs your own script as it is, and wraps each database in a transaction when you tick that. Before any change, a tool says what it will do and asks first: SQL Schema Compare names the tables and columns whose rows go, SQL Data Comparer says how many rows change, and SQL Data Scrambler asks you to type the database's name. SQL Schema Compare also stops if either database changed after you read the plan. Even so, nothing replaces a backup, and the SQL Server tools can take one first.
How does it sign in?
Azure calls run as you, through a browser sign-in once or through your existing az login, in any tenant you belong to. The SQL tools use your Microsoft account, your Windows sign-in or a SQL login, and every connection is encrypted. A SQL login's password is kept until the app closes, or in your system's secure store (DPAPI on Windows, Keychain on Mac, libsecret on Linux) if you tick Remember. It is never written to a settings file, a project file or a log.
When something goes wrong
Why does the tab say Cloud Shell is not set up?
The message Cloud Shell is not set up for this account yet. Open https://shell.azure.com once, choose Bash or PowerShell and how to keep files, then try again here. means the account you signed in with has never opened Cloud Shell. Set it up once in the browser, then open the tab again. If you signed in with the wrong account, run Benchdog Shell: Sign Out in VS Code, or use the account button in the desktop app, and sign in again.
Why does it say Azure would not let this account start Cloud Shell?
Azure would not let this account start Cloud Shell: <reason> Sign in again, or check that your account can use Cloud Shell. means Azure answered with 401 or 403. Your sign-in may have run out, so sign out and in again, or try benchdog shell with --cli after a fresh az login. If it still fails, your tenant may block Cloud Shell for your account; the reason Azure gave is in the message.
Why does it say Cloud Shell could not start, or opened no terminal?
Cloud Shell could not start. Try again in a minute, or open https://shell.azure.com to see why. and Cloud Shell opened no terminal. Try again in a minute. both come from the Cloud Shell service, not from your machine. Wait a minute and open the tab again. If it keeps failing, open shell.azure.com in the browser, where Cloud Shell shows its own reason.
Why did my tab close on its own?
When a shell ends, the tab says why, then The shell closed. Press any key to close this tab. Typing exit closes it as you asked. Cloud Shell's own idle timeout closes it after a while with nothing typed, as it does in the browser. The connection to the shell was lost: <reason> means the network dropped; check your connection and open a new tab. Could not connect to the Cloud Shell terminal. Check your network, then try again. means the connection never opened at all.
Why does Local Terminal say az is not on this machine's PATH?
Benchdog: the Azure CLI (az) is not on this machine's PATH. Install it to use az in local terminals, or open Cloud Shell, which has it already. means VS Code could not find az on your machine. Choose Install Azure CLI to open the install page, or Open Cloud Shell, which has az ready.
Why does benchdog shell say it needs a terminal?
benchdog shell needs a terminal: run it without redirecting its input or output. means the command was run in a pipe or a script with its input or output redirected. It hands your terminal over to Cloud Shell, so run it on its own in a terminal window. Choose --bash or --pwsh, not both. means both options were given; pick one, or leave both out for the shell you chose in Cloud Shell.
How do I get a log of what happened?
Turn on the diagnostics log: in a desktop app, Settings, then Write a diagnostics log; in VS Code, the extension's diagnostics setting; for the benchdog command, set the environment variable BENCHDOG_DIAGNOSTICS=1. Each run writes one file to the logs folder in the Benchdog folder (%LOCALAPPDATA%\Benchdog\logs on Windows, ~/Library/Application Support/Benchdog/logs on Mac, ~/.local/share/Benchdog/logs on Linux), and the last ten are kept. The desktop apps have Open logs folder, and VS Code has the Open Diagnostics Logs Folder command.
The log records sign-in requests, Azure calls, engine requests, SQL connections, times and errors. Passwords, connection strings, tokens, secret values and your data are never written, so it is safe to send to support.
The desktop app showed an error window. What now?
That is the crash window, for an error the app did not expect. Copy details puts the error and its details on the clipboard, Email support opens a message to support with them, and Open logs folder shows the crash report, which is written even with the diagnostics log off. If the error happened on a background thread the app has to close, and the window shows when it next starts.
It says the server's certificate is not trusted.
The SQL Server you connected to uses a certificate your machine does not trust, which is usual for a server on your own network with a self-signed certificate. Pick Trust the server's certificate in the picker, or add --trust-server-certificate on the command line, for servers you know. For a server you do not know, install its certificate chain instead.
How do I remove a SQL password Benchdog remembered?
In a desktop app, choose Forget saved password from the menu. On the command line, run benchdog sql forget-password --server <server> --sql-login <login>. Either removes it from the system's secure store, which is the only place it was kept.
Where do I get help?
Write to support@benchdog.dev or use the support form on this site, and a person replies. Say which tool and version you were using (Help, About in a desktop app shows both), what you did and what you saw, and attach the diagnostics log if you have one.
Not answered here? Ask on the support form and a person replies.