Workflow Dispatch
One-click workflow_dispatch with smart input prompts and live run tracking. Complements the official GitHub Actions extension.
A VS Code extension that turns the editor title bar's rocket icon into a one-click dispatcher for any workflow_dispatch workflow on the current repo. Inputs are prompted from the workflow's declared on.workflow_dispatch.inputs schema — choice becomes a QuickPick, boolean becomes Yes/No, environment fetches the repo's environments, number validates numerically, string is a plain prompt with the YAML's default prefilled.
After dispatch, a status bar item polls the run live (queued → running → success/failed). Click to open the run page.
Features
- Schema-driven prompts. Reads the workflow's
inputs: block; renders the right control per input type. The official GitHub Actions extension uses a plain showInputBox for every input — this is the missing UX.
- Editor title-bar entry point. A rocket icon next to the other title-bar buttons. No need to dig into a tree view.
- Branch / ref override. A
$(git-branch) icon in the workflow picker's title bar opens an InputBox prefilled with the current branch.
- Live run tracking. Status bar shows the run state and updates as it progresses. Multiple in-flight dispatches aggregate into
N running · M done · K failed.
- Recent runs. A QuickPick of recent dispatches with relative timestamps; pick one to open the run.
- Multi-repo batch dispatch. Run the same workflow across every GitHub repo in the workspace. Per-repo branch override.
- Confirmation modal for risky
(input, value) pairs (e.g. environment=prod).
- Custom value providers for inputs whose options aren't declared in the YAML — e.g. fetch directory entries from another GitHub repo.
- Built-in GitHub auth. Uses VS Code's GitHub session — no PAT to manage.
Install
From the Marketplace: search "Workflow Dispatch" or install via:
code --install-extension lolulo.workflow-dispatch
Or from a local .vsix:
git clone https://github.com/lolulo69/vscode-workflow-dispatch.git
cd vscode-workflow-dispatch
npm install
npm run compile
npx vsce package
code --install-extension workflow-dispatch-1.0.2.vsix --force
Reload the window (Cmd+Shift+P → Developer: Reload Window).
Usage
- Open any GitHub-backed repo.
- Click the rocket icon at the right edge of the editor title bar (or run
Workflow Dispatch: Run… from the command palette).
- Pick a workflow. The picker title shows
repo @ current-branch; click the $(git-branch) icon to override.
- Answer each input — the prompt depends on the input's declared type.
- Confirm (if any input matches
confirmInputs).
- Watch the status bar. Click it to open the run.
Commands
| Command |
Description |
Workflow Dispatch: Run… |
The rocket button. Multi-step wizard: workflow → branch → inputs → confirm → dispatch. |
Workflow Dispatch: Run across all workspace repos… |
Same workflow on every GitHub repo in the workspace. Repos must share the same workflow filename and input schema. Per-repo branch override. |
Workflow Dispatch: Recent runs |
The last 10 dispatches with status + timestamp; pick to open the run. |
Settings
| Setting |
Default |
Description |
workflowDispatch.confirmInputs |
[] |
Show a modal before dispatch when any (input, value) pair matches. Example: [{ "input": "environment", "value": "prod" }]. Case-insensitive. |
workflowDispatch.workflows |
{} |
Optional per-repo allowlist. Map "owner/repo" → ["deploy.yml", ...]. Empty = all dispatchable workflows. |
workflowDispatch.providers |
{} |
Custom value providers for inputs whose options aren't in the YAML. See Custom value providers below. |
Custom value providers
When an input doesn't declare type: choice with options: in the workflow YAML, you can populate options from elsewhere via a provider.
How provider keys work
Each entry in workflowDispatch.providers is keyed by four sub-segments:
<owner>/<repo>#<workflow>#<input>
Any sub-segment can be * to match anything; literal values must match exactly. When a dispatch happens, every key in the map is checked, and the most specific match wins — i.e. the key with the largest number of literal (non-*) sub-segments. If multiple keys tie on specificity, the first one in the settings file wins.
| Key |
Meaning |
acme/web#deploy.yml#environment |
Exactly this repo, this workflow, this input. |
acme/*#deploy.yml#environment |
Any repo under acme running deploy.yml's environment input. |
acme/*#*#environment |
Any environment input on any workflow in any acme repo. |
*/*#deploy.yml#environment |
Any repo's deploy.yml with an environment input — useful when the workflow filename is unique to your context. |
*/*#*#release_to |
Any input named release_to, anywhere. |
Specificity wins fall out naturally. With:
{
"workflowDispatch.providers": {
"*/*#*#environment": { "type": "enum", "values": ["staging", "prod"] },
"acme/*#deploy.yml#environment": {
"type": "githubContents",
"repo": "acme/gitops",
"path": "envs"
}
}
}
…a dispatch on acme/web / deploy.yml / environment uses the second entry (3 literals beats 1); one on some-org/some-repo / other.yml / environment falls back to the first.
Note: only whole-segment wildcards are supported. feat-* as a partial pattern won't match feat-foo. Each sub-segment is either * or an exact string.
Provider types
githubContents — list directory or file names under a path in another repo:
{
"workflowDispatch.providers": {
"your-org/app#deploy.yml#environment": {
"type": "githubContents",
"repo": "your-org/gitops",
"path": "envs",
"filter": "directories"
}
}
}
enum — hardcoded list (useful when the workflow's declared options are wrong or stale):
{
"workflowDispatch.providers": {
"*#*#region": {
"type": "enum",
"values": ["us-east-1", "us-west-2", "eu-west-1"]
}
}
}
Authentication
The extension uses VS Code's built-in GitHub authentication — the same session your Source Control panel uses. The first dispatch will trigger a one-time consent for repo, workflow scopes. No PATs, no token refresh, no third-party servers.
Privacy
This extension reads / writes only via your existing GitHub session. No telemetry. No data leaves your machine other than the GitHub API calls needed to list workflows, fetch their YAMLs, dispatch runs, and poll run status.
Relationship to the official GitHub Actions extension
The official GitHub.vscode-github-actions extension is excellent for browsing workflows, viewing run logs, editing YAML, and managing secrets / variables / environments. Install both. Workflow Dispatch focuses on one specific job — turning manual dispatches from a 5-click chore into a one-click action with proper input prompts and live feedback.
License
MIT.