The Memory Problem
Claude Code has a problem: it forgets everything. You close the session, open another one, and it’s like talking to someone who doesn’t know you. You can load context with CLAUDE.md, sure, but what about half-finished tasks? Bugs you found but didn’t fix? The plan you had for tomorrow?
There are three complementary solutions: Linear (or your product tool), Beads (git-backed plugin), and Tasks (integrated in Claude Code). Each one for a different time horizon.
Tasks: Working Memory
Tasks is Claude Code’s internal system for tracking what it’s doing right now. When you ask for something complex, Claude automatically creates a task list.
Press Ctrl+T to see them:
┌─────────────────────────────────────────────────┐
│ Tasks │
├─────────────────────────────────────────────────┤
│ ✓ Read project structure │
│ ● Implement authentication endpoint │
│ ○ Write tests │
│ ○ Update documentation │
└─────────────────────────────────────────────────┘
Features
- Automatic: Claude creates them when work has multiple steps
- Persistent through compaction: Survive when context gets compacted
- Visible with
Ctrl+T: Quick toggle view - Limited to 10: Only shows the first 10 (ask “show me all tasks” to see more)
Sharing Between Sessions
By default, Tasks die with the session. But you can make them persistent:
| |
This saves tasks in ~/.claude/tasks/qualitra/. Next time you start with the same ID, you recover the list.
When to Use Tasks
| Situation | Tasks |
|---|---|
| Implement a feature in one session | ✓ |
| Follow a defined work plan | ✓ |
| Step-by-step debugging | ✓ |
| Refactoring with clear steps | ✓ |
Tasks is for execution. You know what needs to be done, you just need tracking.
Beads: Project Memory
Beads is a plugin that adds a complete issue tracker, stored in git. Think of it as “Linear but local and free.”
| |
ID TYPE PRI STATUS TITLE
qua-1 epic P2 open Scoring Raven
qua-2 task P1 in_progress Implement scoring module
qua-3 bug P0 blocked Stack overflow in acquireStartLock
Features
- Git-backed: Issues live in
.beads/and get committed with your code - Dependencies: One issue can block another
- Priorities and types: Epics, tasks, bugs, features, chores
- Multi-session: Context persists between sessions (and people)
- Hooks: Syncs automatically with
bd sync
The Workflow
| |
When to Use Beads
| Situation | Beads |
|---|---|
| Work spanning multiple sessions | ✓ |
| Bugs discovered during development | ✓ |
| Features with dependencies | ✓ |
| Projects with multiple agents/people | ✓ |
| Technical debt tracking | ✓ |
| Issues you want in git history | ✓ |
Beads is for planning. You don’t know exactly what you’ll do, but you know what problems need solving.
The Key Difference
Tasks: “I’m doing X, which has steps A, B, C”
Beads: “Need to solve X, Y, Z. Now working on X.”
Tasks is the shopping list while you’re cooking. Beads is the week’s menu.
Using Them Together
The ideal flow combines both:
- Beads to capture work (issues, bugs, ideas)
- Tasks to execute that work step by step
| |
Mental Migration
If you’re coming from other systems:
| Coming from… | Tasks is like… | Beads is like… |
|---|---|---|
| Jira | Subtasks of a ticket | Backlog tickets |
| Linear | - | Complete Linear |
| GitHub Issues | - | Issues |
| Notion | Checklist | Task database |
| Paper | Today’s list | Project notebook |
Quick Setup
Tasks
Already included. Just remember:
Ctrl+Tfor view toggleCLAUDE_CODE_TASK_LIST_ID=namefor persistence- “clear all tasks” to clean up
Beads
| |
Useful Commands
Tasks
| Command | What it does |
|---|---|
Ctrl+T | Toggle task view |
/todos | List current tasks |
| “show me all tasks” | See all (not just 10) |
| “clear all tasks” | Clear list |
Beads
| Command | What it does |
|---|---|
bd ready | Unblocked issues |
bd list -s open | All open ones |
bd show <id> | Issue detail |
bd create | New issue |
bd update <id> | Modify issue |
bd close <id> | Close issue |
bd sync | Sync with git |
bd blocked | See what’s blocked |
The Common Mistake
Don’t use Beads as Tasks. I’ve seen this:
| |
That’s Tasks’ job, not Beads’. Beads is for things that matter tomorrow:
| |
The Three-Layer System
If you work with Claude Code on serious projects, you probably already use something like Linear, Jira, or GitHub Projects for product vision. Where does that fit?
The answer is a three-layer system by time horizon and audience:
| Layer | Horizon | Audience | Tool |
|---|---|---|---|
| Strategic | Weeks/months | Human | Linear, Jira, etc. |
| Tactical | Days/sessions | LLM | Beads |
| Execution | Minutes/hours | LLM | Tasks |
Why It Works
Linear (or your product tool) has what Beads can’t offer:
- Visual roadmaps
- Cycles and sprints
- Integrations (Slack, GitHub, etc.)
- UI for thinking big
- Stakeholder collaboration
Beads has what Linear can’t offer:
- Lives in the repo (LLM sees it without configuration)
- Zero latency (local)
- Dependencies the LLM understands natively
- Git history of decisions
- Works offline
Tasks has what neither of the others offers:
- Automatic creation
- Real-time visualization
- Zero friction
The Natural Flow
Linear (roadmap)
↓ you manually break down
Beads (sprint/week)
↓ Claude automatically breaks down
Tasks (session)
Avoiding Duplication
Don’t copy issues from Linear to Beads literally. Beads should have the concrete work, not the product description.
# Linear (what you want)
"Implement OAuth authentication with Google and GitHub"
# Beads (what needs to be done)
qua-12: Configure OAuth provider in Supabase
qua-13: Endpoint /auth/callback
qua-14: Refresh token rotation
qua-15: E2E tests for login flow
# Tasks (what I'm doing now)
✓ Read Supabase Auth documentation
● Create migration for oauth_tokens table
○ Implement callback handler
Linear says what you want. Beads says what needs to be done. Tasks says what I’m doing.
Summary
| Aspect | Tasks | Beads | Linear |
|---|---|---|---|
| Horizon | Hours | Days | Weeks/months |
| Audience | LLM | LLM | Human |
| Scope | Session | Project | Product |
| Persistence | Optional | Git | Cloud |
| Dependencies | No | Yes | Yes |
| Creation | Automatic | Manual | Manual |
| Collaboration | No | Yes (git) | Yes (team) |
| Purpose | Execution | Tactics | Strategy |
TL;DR: Three memory layers for working with AI: Linear for product vision (weeks), Beads for tactical work (days), Tasks for execution (hours). Linear says what you want, Beads says what needs to be done, Tasks says what I’m doing. Don’t duplicate between layers.
More info: