Use Taskhold with Grok Build
By Jake Marsh, who builds Taskhold. Updated 2026-10-31. Facts about other tools checked 2026-10-31. 4 min read.
Grok Build is xAI's coding agent for the terminal, run as grok. Connect it to Taskhold and it takes work from a list you keep in the browser, plans each task into steps and reports them to the live board.
Grok reads AGENTS.md and CLAUDE.md, so the workflow from the CLAUDE.md task workflow guide works as written. If Claude Code or Codex work in the same repos, all three can share one list.
What you get with Grok Build and Taskhold
- Grok claims tasks as "Grok Build in <repo>" and plans each one into steps.
- Progress, the running step and blocked questions on the live board.
- A summary on each finished task, readable from any device.
Connect Grok Build to Taskhold
- Start the 7-day trial, open Settings > API keys and create a key for this machine. It starts with atd_sk_. One key per tool and machine lets you revoke each one on its own.
- Export it in your shell profile: export TASKHOLD_API_KEY=atd_sk_...
- Add the server to ~/.grok/config.toml. That's the user config, so the entry stays out of the repo.
[mcp_servers.taskhold]
url = "https://taskhold.com/api/mcp"
headers = { "Authorization" = "Bearer ${TASKHOLD_API_KEY}" }Or add it from the command line. The single quotes keep your shell from filling in the variable, so the config stores the reference and not the key:
grok mcp add --transport http taskhold https://taskhold.com/api/mcp \
--header 'Authorization: Bearer ${TASKHOLD_API_KEY}'
grok mcp doctor taskholdTell Grok Build how to use the list
Grok loads AGENTS.md (and CLAUDE.md) from every directory between the repo root and where you start it, once you trust the folder. Add the workflow to AGENTS.md:
## Tasks (Taskhold)
The person and I share a task list through the taskhold MCP tools. They watch a live board while I work.
Pass project: "<repo folder name>" on every call (created on first use, no ids needed).
- Session start: taskhold_get_current and taskhold_updates, both with project. Keep the cursor.
- New request: taskhold_begin with title, project, steps and agent: "Grok Build in <repo>". It files the task, plans the steps and starts the first one. Queued work: taskhold_list (project, status todo), then taskhold_begin with task_id.
- Each step done: taskhold_complete with start_next: true. Steps drive the progress bar.
- Long step: taskhold_progress on the step (N of M, or a percent) with a short message. Every few minutes at most.
- Need a decision: taskhold_block with one specific question, then taskhold_updates with task_id, since and wait: 50 until the reply arrives.
- Done: taskhold_complete on the task with what changed and how I checked it.
- A TODO or bug I'm not fixing now: taskhold_create with project (or taskhold_create_from_todo with file and line).One limit to know
Grok also loads MCP servers from ~/.claude.json, Cursor's mcp.json and a project .mcp.json. If Claude Code reaches Taskhold through keyless sign-in, Grok picks up that entry with no key, and every call fails with 401: Taskhold's sign-in only works for Claude Code, Cursor, Codex, claude.ai and ChatGPT. Name your config.toml entry taskhold, as above. When names match, config.toml wins. Keep the host as taskhold.com, because www.taskhold.com redirects and the header doesn't survive the redirect.
What leaves your machine, and how to disconnect
Taskhold receives task titles, steps, progress messages, questions and summaries, whatever the agent or script sends. Taskhold never sends code or commands to your machine, and it doesn't read your repository.
To cut a tool off, open Settings > API keys and revoke its key. The next call fails with 401. Then remove the Taskhold entry from the tool's config so it stops trying.
See how far along your coding agents are.
$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.
Questions
- Why does Grok show the tools as taskhold__taskhold_begin?
- Grok prefixes every MCP tool with its server name and two underscores. The model finds the tools with its search_tool and calls them with use_tool, so the tool names in AGENTS.md still lead it to the right ones.
- Can I run the hosted stdio package instead?
- Yes. Use command = "npx" and args = ["-y", "https://taskhold.com/dl/taskhold-mcp-latest.tgz"] in the same [mcp_servers.taskhold] section, plus env = { TASKHOLD_API_KEY = "${TASKHOLD_API_KEY}" } to pass the key through. Without it, the package falls back to ~/.taskhold/config.json. No headers needed.
- How do I check that Grok loaded Taskhold?
- Run grok mcp doctor taskhold, or grok inspect to list every server Grok loaded and where each one came from. In the TUI, /mcps shows the server and its tool count.
Sources
- Grok Build docs: MCP servers, checked 2026-10-31
- Grok Build docs: project rules, checked 2026-10-31
- Grok Build user guide: MCP servers (GitHub), checked 2026-10-31
Related
Updated 2026-10-31. Something wrong or out of date? Email hello@greatwork.company.