Move from GitLab to Taskhold
By Jake Marsh, who builds Taskhold. Updated 2026-11-09. 3 min read.
Short answer: Open Import in Taskhold, pick GitLab 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 GitLab is a one-time move, not a sync, so your history comes with you and GitLab stays untouched.
The steps below are the same ones the Import page shows. Import your tasks lists every source the importer reads.
Connect GitLab with a personal access token
Taskhold reads GitLab through its API with a personal access token you paste once. The token is used for that import and dropped: it isn't saved, logged or shown again.
- In GitLab, open your avatar > Preferences > Access tokens and add a token with the read_api scope.
- Copy it and paste it here. On a self-managed GitLab, enter its address too.
- In Taskhold, open Import, pick GitLab, paste it and click Connect.
- Pick what to bring over, check the preview and click Import.
Or import GitLab's export file
- Or, on the project's Issues page, choose Export as CSV.
- Download the file from the email and drop it here.
- Check the preview and click Import.
What comes over from GitLab
| In GitLab | In Taskhold |
|---|---|
| Projects | Projects |
| Issues | Carried over |
| Descriptions (Markdown) | Description |
| Open and closed | Carried over |
| Labels (scoped labels like priority::high set the priority) | Labels |
| Comments | Notes, token import |
| Due dates, milestone, weight, assignees | 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 GitLab
- Epics and iterations
- Merge requests
- Attachments (their links stay in the description)
After the import
Imported tasks keep their original created and completed dates, and each one's history starts with "Imported from GitLab". 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 GitLab?
- No. An import is a one-time copy. GitLab 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 GitLab token?
- No. The token goes out with the requests for that one import and is then dropped. Taskhold calls only GitLab's own API address with it. You can revoke the token in GitLab as soon as the import is done.
- Where do due dates go?
- Taskhold has no due date field, so dates go into the task's description under Imported details, word for word, along with any other field that has no column. The preview lists each one before you import.
Related
Updated 2026-11-09. Something wrong or out of date? Email hello@greatwork.company.