🚀 GitHub Actions Runner for VS Code

Run and monitor GitHub Actions workflows directly from VS Code — no browser needed.
Dispatch workflows with dynamic inputs, monitor runs in real-time, save presets, and view logs/artifacts without leaving your editor.
🎬 See It in Action

Watch the extension in action: Dispatch workflows, fill dynamic inputs, monitor runs in real-time — all without leaving VS Code.
💡 Why Use GitHub Actions Runner?
⚡ Stay in Your Flow
Stop switching between VS Code and GitHub's web UI. Dispatch workflows, monitor runs, and view logs without breaking your development flow.
🎯 Smart & Dynamic
- Auto-generated forms from your workflow YAML — no manual configuration
- Intelligent input recovery — rerun workflows with prefilled inputs from previous runs
- Branch auto-detection — automatically uses your current Git branch
- File path detection — browse and select files with VS Code's native picker
💾 Reusable Presets
Save workflow configurations as named presets (e.g., "Staging Deploy", "Production Release") and dispatch them with one click. Export/import presets to share with your team.
⭐ Favorites & Quick Access
Mark frequently used workflows as favorites for instant access. Pin workflows to filter runs and find what matters most.
📊 Real-Time Monitoring
- Live status updates with color-coded indicators
- Filter by workflow, branch, PR, or marked workflows
- View logs directly in VS Code editor
- Download artifacts with one click
- Rerun failed jobs or entire workflows
🔐 Secure & Flexible
- GitHub OAuth or Personal Access Token (PAT) authentication
- Secure token storage using VS Code SecretStorage
- Works with any GitHub repository
🚀 Quick Start
1️⃣ Install the Extension
Install from the VS Code Marketplace or search for "GitHub Actions Runner" in VS Code.
2️⃣ Authenticate with GitHub
- Click the GitHub Actions Runner icon in the sidebar
- Click "Sign in with GitHub" or "Use Personal Access Token"
- If using PAT, create one with
workflow scope at github.com/settings/tokens
3️⃣ Dispatch Your First Workflow
- Open a repository with GitHub Actions workflows
- Select a workflow from the dropdown (only
workflow_dispatch workflows are shown)
- Fill in any required inputs
- Select a branch (defaults to your current branch)
- Click "Dispatch Workflow" 🚀
4️⃣ Monitor Workflow Runs
- Click "Open Workflow Runs" to view all runs
- Filter by workflow, branch, PR, or marked workflows
- Click "View Logs" to see job logs in VS Code
- Click "Download Artifacts" to download build artifacts
- Click "Rerun" to rerun workflows with smart input recovery
5️⃣ Save Presets for Quick Access
- Fill in workflow inputs
- Click the 💾 quick save icon or "Save preset"
- Give it a name (e.g., "Production Deploy")
- Load it anytime from the preset dropdown
Pro Tip: Use Export/Import to share presets with your team!
📸 Screenshots
Workflow Dispatch

Select workflows, fill inputs, and dispatch with one click
Workflow Runs

Monitor runs in real-time with powerful filters
Preset Management

Save and load workflow configurations as reusable presets
Favorites

Quick access to frequently used workflows
Marked Workflows

Pin workflows for easy filtering and quick access
Logs View

View workflow logs directly in VS Code editor
✨ Features
🔧 Workflow Runs Panel
| Feature |
Description |
| View Logs |
Open workflow run logs directly in VS Code editor |
| View Jobs & Steps |
Expand any run to see individual jobs with status, duration, and step details |
| Download Artifacts |
Download workflow artifacts as ZIP files |
| Rerun Workflows |
Rerun all jobs or only failed jobs |
| Cancel Runs |
Cancel in-progress workflows with loading states and error handling |
| Enhanced Metadata |
View branch, commit, actor, and duration information |
🔍 Advanced Filtering & Auto-Refresh
| Feature |
Description |
| Filter by Status |
Success, Failure, In Progress, Queued, Cancelled |
| Filter by Actor |
"My Runs" or "All Users" |
| Filter by Date Range |
Predefined (Today, Last 7/30 Days) or custom date ranges |
| Filter by Workflow |
Focus on runs from a specific workflow |
| Filter by Branch/PR |
Filter runs by branch name or pull request |
| Pagination |
Configure runs per page (20/50/100) |
| Progressive Loading |
Fetches up to 1000 runs with smart caching |
| Auto-Refresh |
Configurable interval (15s–3m) with smart pause |
👁️ Watched Runs
- Watch Important Runs — Mark any run as "watched" to track it regardless of filters
- Persistent Tracking — Watched runs persist across sessions (up to 20 per repository)
- Dedicated Filter — Toggle "Watched Runs Only" to see all your tracked runs
💾 Presets & Templates
- Save Presets — Save workflow configurations with custom names (e.g., "Staging Deploy")
- Quick Load — Select presets from dropdown to populate inputs instantly
- Export/Import — Share presets with your team via JSON export
- Workflow History — Track your dispatched workflows and rerun with one click
⭐ Favorites System
- Mark Favorites — Star frequently used workflows for instant access
- Pre-filled Inputs — Automatically populate workflow inputs from favorites
- Workspace/Global Scope — Choose between workspace-specific or global storage
- Visual Cards — Browse favorites with workflow name, repository, and branch info
📁 File Path Detection
- Auto-Detection — Detects file path parameters based on configurable keywords
- Native File Picker — Browse and select files using VS Code's file picker
- Smart Paths — Uses workspace-relative paths when possible
- Size Warnings — Warnings for large files (configurable threshold)
🔐 Authentication
- OAuth Support — Use VS Code's built-in GitHub authentication (recommended)
- PAT Support — Personal Access Token with
workflow scope
- Secure Storage — Tokens stored in VS Code SecretStorage (encrypted)
- User Display — Shows authenticated GitHub username with profile icon
🔔 Notifications
- Desktop Notifications — Get notified when workflows complete
- Configurable Alerts — Choose when to receive notifications (success/failure)
- Non-Intrusive — Stay informed without switching contexts
⚙️ Configuration
Access settings via File > Preferences > Settings and search for "GitHub Actions Runner". You can also open settings directly from the Sidebar using the ⚙️ Settings button in the Repository Configuration section.
Repository Settings
githubWorkflowRunner.repository.owner: Repository owner/organization (auto-detected)
githubWorkflowRunner.repository.name: Repository name (auto-detected)
githubWorkflowRunner.repository.manualOwner: Manual override for repository owner
githubWorkflowRunner.repository.manualName: Manual override for repository name
githubWorkflowRunner.defaultBranch: Default branch for dispatch
Note: Repository settings can be configured directly in the sidebar UI. Manual overrides take precedence over auto-detection.
Monitoring Settings
githubWorkflowRunner.monitoring.autoRefresh: Enable auto-refresh
githubWorkflowRunner.monitoring.refreshInterval: Refresh interval (seconds)
githubWorkflowRunner.monitoring.maxRuns: Max runs to display
UI Settings
githubWorkflowRunner.ui.confirmBeforeDispatch: Show confirmation dialog
githubWorkflowRunner.ui.rememberLastWorkflow: Remember last workflow
Git Settings
githubWorkflowRunner.git.autoDetectBranch: Auto-detect current branch
Notification Settings
githubWorkflowRunner.notifications.enabled: Enable notifications
githubWorkflowRunner.notifications.onSuccess: Notify on success
githubWorkflowRunner.notifications.onFailure: Notify on failure
Authentication Settings
githubWorkflowRunner.authentication.method: Authentication method to use. Options:
auto (default): Try OAuth first, fall back to PAT
oauth: Use VS Code's built-in GitHub authentication (recommended)
pat: Use Personal Access Token only
Workflow Settings
githubWorkflowRunner.workflows.excludePatterns: Array of glob-like patterns to exclude workflows from the list (e.g., ["**/experimental-*", "**/legacy.yml"]). Default: []
Favorites Settings
githubWorkflowRunner.favorites.scope: Storage scope for favorites, either workspace (per-workspace) or global (across all workspaces). Default: workspace
githubWorkflowRunner.favoriteRepositories: Array of favorite repositories to show in the repository selector. Each item is an object { owner: string, name: string }.
Example:
{
"githubWorkflowRunner.favoriteRepositories": [
{ "owner": "my-org", "name": "service-a" },
{ "owner": "my-org", "name": "service-b" }
]
}
File Path Detection
githubWorkflowRunner.filePathDetection.enabled: Enable automatic file path parameter detection. Default: true
githubWorkflowRunner.filePathDetection.keywords: Keywords used to detect file path-like inputs. Default: ["path", "file", "config", "script", "template", "yaml", "json"]
githubWorkflowRunner.filePathDetection.preferRelativePaths: Prefer workspace-relative paths when possible. Default: true
githubWorkflowRunner.filePathDetection.warnSizeThreshold: File size threshold (bytes) above which a warning is shown when loading file contents. Default: 1048576 (1MB)
githubWorkflowRunner.filePathDetection.maxFileSize: Maximum file size (bytes) allowed when loading a file content into an input. Default: 10485760 (10MB)
Logs
githubWorkflowRunner.logs.debug: Enable verbose debug logging for fetching job logs and artifacts. Default: false
🎮 Commands
| Command |
Description |
GitHub Actions Runner: Show Workflow Runs |
Open monitoring panel |
GitHub Actions Runner: Hide Workflow Runs |
Close monitoring panel |
GitHub Actions Runner: Refresh Workflows |
Reload workflow list |
GitHub Actions Runner: Run Last Workflow |
Rerun last workflow |
🏗️ Architecture
Documentation
For detailed architecture documentation, see:
- string: Text input field
- choice: Dropdown select with options
- boolean: Checkbox
- number: Number input
- environment: Environment selector (if defined)
Workflow Requirements
Workflows must have a workflow_dispatch trigger with optional inputs:
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy'
required: true
type: choice
options:
- dev
- staging
- production
version:
description: 'Version to deploy'
required: true
type: string
dry_run:
description: 'Perform dry run'
required: false
type: boolean
default: false
🔧 Troubleshooting
Authentication Issues
- Verify token has
workflow scope
- Try signing out and back in
Workflow Not Found
- Ensure workflow has
workflow_dispatch trigger
- Check workflow file is in
.github/workflows/
- Verify YAML syntax is valid
Branch Not Detected
- Ensure you're in a Git repository
- Check Git extension is enabled in VS Code
- Verify repository has commits
Git Context Changed Warning
If you see a warning about "Git repository or branch has changed":
- This occurs when you switch branches or repositories while the extension is open
- Click the "Reload" button in the sidebar to refresh the extension state
- This safety feature prevents accidentally dispatching workflows to the wrong branch/repository
📝 License
Apache-2.0 License - see the LICENSE file for details.
🤝 Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
If you find this extension helpful, please consider sponsoring my work! Your support helps me:
- ⏰ Dedicate more time to development and maintenance
- 🐛 Fix bugs and improve stability faster
- ✨ Build new features requested by the community
- 📚 Create better documentation and tutorials
Every contribution, no matter the size, makes a real difference and is greatly appreciated! 🙏

📞 Support
For issues or questions, please open an issue on GitHub.