Feature Request: --sync-dir option for Tasks to enable git-based cross-machine collaboration
Summary
Tasks are a fantastic new primitive for coordinating work across sessions and subagents. However, they currently live in ~/.claude/tasks/ (user-local), which means they can't be shared between collaborators working on the same project via git.
A --sync-dir option (or similar configuration) that stores task JSON files in a project-local directory would bridge this gap, enabling the same dependency-aware task coordination across machines that currently works across sessions on a single machine.
Proposed Behavior
# Store tasks in the project directory instead of ~/.claude/tasks/
claude --sync-dir .claude/tasks
# Or as a project-level setting in .claude/settings.json:
{
"taskSyncDir": ".claude/tasks"
}
When configured:
- Task JSON files would be written to the specified project-relative directory
git add/commit/push/pullwould naturally sync tasks between collaborators- Each collaborator's Claude Code sessions would read from and write to the same directory
- The existing
CLAUDE_CODE_TASK_LIST_IDmechanism could still work for identifying which task list to use
Use Case
Two developers working on the same repo, each using their own Claude Code instance:
# Developer A:
claude # creates tasks with dependencies, stored in .claude/tasks/
git add .claude/tasks && git commit -m "add sprint tasks" && git push
# Developer B:
git pull # gets the shared task list
claude # sees the same tasks, can claim work, update status
Why This Matters
The Tasks announcement explicitly mentioned inspiration from projects like Beads, which solve cross-machine collaboration by storing issues in the git repo. Tasks already have the right data model (JSON files with blocks/blockedBy dependencies), but the storage location (~/.claude/) prevents the natural git-based sharing that would make them a complete project coordination tool.
The current workaround is to use a separate system (like Beads or GitHub Issues) for the shared backlog and Tasks only for local execution — but unifying these into one tool with a simple storage option would be much cleaner.
Considerations
- Merge conflicts: Task files are small, independent JSON — conflicts would be rare and easy to resolve
- Broadcasting: Could local file-watching (fswatch/inotify) replicate the same-machine broadcasting behavior for shared directories?
- Privacy: Some tasks might be personal/local — perhaps a
--sync-dirstores shared tasks while~/.claude/tasks/retains private ones .gitignore: Users could choose whether to commit tasks or not
Environment
- Claude Code (latest)
- Using Tasks with
CLAUDE_CODE_TASK_LIST_IDfor multi-session coordination - Collaborating via git/GitHub with another developer also using Claude Code
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗