The GitHub Issues task backend allows you to use GitHub Issues as your task management system while working with Minsky. Tasks are automatically synchronized between Minsky and GitHub Issues, providing a seamless integration between your development workflow and GitHub's project management features.
The GitHub Issues task backend is disabled by default. The configuration flag
tasks.githubBackend.enabled (default false) guards backend registration in both
the explicit-request path and the multi-backend auto-register path.
The github-issues backend treats all issues in the repository as tasks (25k+ issues in
the Minsky repo alone), has had reliability issues (spec-write no-ops, id-mapping bugs,
pagination bugs), and Minsky's operational default is the Minsky DB backend (mt#).
The flag is reversible — see below to re-enable.
Add to your user config (~/.config/minsky/config.yaml) or repo config
(.minsky/config.yaml):
tasks:
githubBackend:
enabled: trueWith the flag set, the github backend registers when GitHub credentials
(GITHUB_TOKEN, owner, repo) are present — restoring the behavior from before
the gate was introduced.
When the flag is false (default), any explicit request for the github backend
— --backend github, --backend github-issues, or via the MCP backend parameter —
returns this error:
GitHub-issues task backend is disabled. Set tasks.githubBackend.enabled=true in your Minsky config to use it.
In multi-backend mode (no explicit --backend), the backend is silently skipped with
an info log; tasks_create with no backend creates an mt# Minsky task as usual.
- Automatic Task Synchronization: Create, update, and manage tasks that sync with GitHub Issues
- Status Label Management: Task statuses are mapped to GitHub issue labels (
minsky:todo,minsky:in-progress, etc.) - GitHub Integration: Leverage GitHub's issue features like assignments, milestones, and comments
- Team Collaboration: Share task visibility with team members through GitHub's interface
- Flexible Authentication: Support for GitHub Personal Access Tokens and GitHub CLI integration
IMPORTANT: The GitHub Issues task backend requires a GitHub repository backend. It cannot be used with local repository backends.
This means:
- Your repository must have a GitHub remote URL (e.g.,
https://github.com/user/repo.git) - You must be working in a repository that's hosted on GitHub
- Session workspaces must be created with GitHub repository backend
You need a GitHub Personal Access Token with the following permissions:
reposcope (for private repositories)public_reposcope (for public repositories)
- Go to GitHub Settings > Developer Settings > Personal Access Tokens
- Click "Generate new token (classic)"
- Give your token a descriptive name (e.g., "Minsky Task Management")
- Select scopes:
- ✅
repo(Full control of private repositories) - ✅
public_repo(Access public repositories)
- ✅
- Click "Generate token"
- Copy the token immediately (you won't see it again)
export GITHUB_TOKEN="ghp_your_token_here"Add this to your shell profile (.bashrc, .zshrc, etc.) to persist across sessions.
Create a .env file in your project root:
# .env
GITHUB_TOKEN=ghp_your_token_hereNote: Add .env to your .gitignore to avoid committing tokens to version control.
If you have GitHub CLI installed and authenticated:
gh auth loginMinsky will automatically use your GitHub CLI credentials.
Configure your repository to use the GitHub Issues backend:
# .minsky/config.yaml
version: 1
# Task Backend Configuration
tasks:
backend: "github-issues"
# Persistence Configuration (Postgres is the only supported backend — mt#2339)
persistence:
backend: "postgres"
postgres:
connectionString: "${MINSKY_PERSISTENCE_POSTGRES_URL}"Test your configuration:
# Test GitHub connectivity
minsky github test
# List existing issues (should work if authentication is correct)
minsky tasks listminsky github test and minsky github status exit non-zero (1) when a check genuinely
fails — a repository-access error, an unexpected configuration-load failure — so scripts and CI
can branch on the exit code directly, without parsing output. Exit 0 covers both "every check
passed" (the 🎉/✅ banner) and an informational "not yet configured" state (github-issues yet) — neither is a failure, so neither exits non-zero.
# Create a new task (creates GitHub issue)
minsky tasks create "Fix login bug"
# List all tasks
minsky tasks list
# Update task status
minsky tasks status set 123 IN-PROGRESS
# Show task details
minsky tasks show 123# Start a session for a GitHub issue
minsky session start task123 --task 123
# Work in the session...
# Create PR
minsky session pr create --title "Fix login bug" --type fix
# Changeset aliases also available:
minsky session changeset create --title "Fix login bug" --type fix
minsky session cs create --title "Fix login bug" --type fix
# Approve and merge
minsky session pr approve# .minsky/config.yaml
version: 1
tasks:
backend: "github-issues"
# Custom label configuration (optional)
backendConfig:
github-issues:
statusLabels:
TODO: "minsky:todo"
IN_PROGRESS: "minsky:in-progress"
IN_REVIEW: "minsky:in-review"
DONE: "minsky:done"
BLOCKED: "minsky:blocked"
CLOSED: "minsky:closed"
persistence:
backend: "postgres"
postgres:
connectionString: "${MINSKY_PERSISTENCE_POSTGRES_URL}"Problem: Trying to use GitHub Issues backend with a local repository backend.
Solution: Ensure your repository has a GitHub remote URL:
git remote get-url origin
# Should return: https://github.com/user/repo.git (not a local path)Problem: GitHub token is missing, invalid, or lacks required permissions.
Solutions:
- Verify token is set:
echo $GITHUB_TOKEN - Check token permissions include
repoorpublic_repo - Regenerate token if it has expired
- Ensure token is correctly copied (no extra spaces/characters)
Problem: GitHub token doesn't have access to the repository.
Solutions:
- Verify repository exists and token has access
- For private repositories, ensure token has
reposcope - Check repository URL format is correct
Problem: Hit GitHub API rate limits (5,000 requests/hour for authenticated users).
Solutions:
- Wait for rate limit to reset (check
X-RateLimit-Resetheader) - Reduce frequency of operations
- Use GitHub Apps for higher rate limits in organization settings
Use the built-in test command to verify your setup:
# Test GitHub API connectivity
minsky github test
# Show detailed connection information
minsky github status --verboseEnable debug logging to troubleshoot issues:
export LOG_LEVEL=debug
minsky tasks list- Never commit tokens to version control
- Use environment variables or secure credential storage
- Rotate tokens regularly (GitHub recommends every 90 days)
- Use minimal required permissions for tokens
- Consistent configuration: Use the same
.minsky/config.yamlacross team members - Shared repository access: Ensure all team members have repository permissions
- Label conventions: Agree on status label naming conventions
- Batch operations: Use bulk operations when possible
- Cache responses: GitHub API responses are cached temporarily
- Monitor rate limits: Be aware of API usage in automated workflows
If migrating to GitHub Issues from another backend:
-
Export existing tasks:
minsky tasks export --format json > tasks-backup.json
-
Configure GitHub Issues backend (follow setup steps above)
-
Import tasks (when migration utilities are available):
minsky tasks import --to github-issues
You can use different backends for different repositories:
- Open source projects: GitHub Issues backend for public visibility
- Internal tools: Minsky backend for simplicity
GitHub Issues backend respects repository issue templates when creating new issues through the GitHub web interface.
- Assignees: Set through GitHub interface, synced to Minsky
- Labels: Minsky status labels coexist with other GitHub labels
- Milestones: GitHub milestones are preserved and displayed
GitHub Issues created by Minsky can be added to GitHub Project boards and managed through GitHub's project management interface.
For issues with the GitHub Issues backend:
- Check troubleshooting section above
- Enable debug logging to get detailed error information
- Test connectivity with
minsky github test - Check GitHub API status at githubstatus.com
- Report bugs with debug logs and configuration details
Planned features for the GitHub Issues backend:
- Webhook support for real-time synchronization
- GitHub Actions integration for automated workflows
- Enhanced project board integration
- Custom field mapping for GitHub issue templates
- Bulk migration utilities from other backends