Move from GitHub Issues to Taskhold
By Jake Marsh, who builds Taskhold. Updated 2026-11-09. 3 min read.
Short answer: Open Import in Taskhold, pick GitHub Issues and connect with a token or drop an export file. The preview shows every task, step and note and where each field lands before anything is saved. One click undoes the import, and running it again later skips what came over the first time.
Taskhold is a task list you share with your coding agents: you add and order tasks, agents plan them into steps and report progress you watch on the live board. Importing from GitHub Issues is a one-time move, not a sync, so your history comes with you and GitHub Issues stays untouched.
The steps below are the same ones the Import page shows. Import your tasks lists every source the importer reads, and Taskhold vs GitHub Issues says when to stay put.
Connect GitHub Issues with a fine-grained token
Taskhold reads GitHub Issues through its API with a fine-grained token you paste once. The token is used for that import and dropped: it isn't saved, logged or shown again.
- On GitHub, open Settings > Developer settings > Personal access tokens > Fine-grained tokens and create one.
- Give it read access to Issues on the repositories you want, copy it and paste it here.
- In Taskhold, open Import, pick GitHub Issues, paste it and click Connect.
- Pick what to bring over, check the preview and click Import.
Or import GitHub Issues's export file
- Or, in a terminal in the repo, run: gh issue list --state all --limit 1000 --json number,title,body,state,stateReason,labels,assignees,author,milestone,createdAt,closedAt,url,comments > issues.json
- Drop issues.json here.
- Check the preview and click Import.
What comes over from GitHub Issues
| In GitHub Issues | In Taskhold |
|---|---|
| Repositories | Projects |
| Issues (pull requests are skipped) | Carried over |
| Bodies (Markdown) | Carried over |
| Open and closed, with the closed reason | Carried over |
| Labels | Labels |
| Comments | Notes |
| Sub-issues | Steps |
| Assignees, milestone and author | Imported details, at the end of the description |
| Created and closed dates | Carried over |
Fields Taskhold has no column for are kept word for word under Imported details at the end of the task's description. The preview lists each one with a count.
What stays in GitHub Issues
- Reactions
- Project board fields (Status, Iteration) from GitHub Projects
- Linked pull requests
After the import
Imported tasks keep their original created and completed dates, and each one's history starts with "Imported from GitHub Issues". Your agent sees them at once: ask it to "work on the next task" and it picks the highest-priority one, plans it into steps and reports on the live board. The quickstart connects an agent in a minute.
Agents can import too. POST /api/import with the file's text and a project name brings a TODO.md, todo.txt or CSV in with one call; the REST API docs have the details.
Answer your coding agents from anywhere.
$12/month or $120/year after the trial. Card up front. Cancel before day 7 and you pay nothing. Every agent you run is included.
Or connect your agent first, no sign-up: add https://taskhold.com/api/mcp as an MCP server. The first time it uses Taskhold, it gives you the trial link.
Questions
- Does Taskhold keep syncing with GitHub Issues?
- No. An import is a one-time copy. GitHub Issues stays as it was, and changes made there afterwards don't show up in Taskhold until you import again.
- What if I import the same thing twice?
- Each imported task remembers where it came from, so a second import skips what is already there and adds only what's new. Choose Update instead of Skip to refresh titles, status, steps and notes from the source.
- Can I undo an import?
- Yes. The last screen of the import, and the Recent imports list on the Import page, have Undo this import. Undo removes the tasks, steps, notes, labels and projects the import made and restores any task it updated.
- Does Taskhold store my GitHub Issues token?
- No. The token goes out with the requests for that one import and is then dropped. Taskhold calls only GitHub Issues's own API address with it. You can revoke the token in GitHub Issues as soon as the import is done.
Related
Updated 2026-11-09. Something wrong or out of date? Email hello@greatwork.company.