Skip to main content
Understanding beads’ collision-resistant ID system.

The Problem

Traditional sequential IDs (#1, #2, #3) break when:
  • Multiple agents create issues simultaneously
  • Different branches have independent numbering
  • Forks diverge and later merge

The Solution

Beads uses hash-based IDs:
Properties:
  • Globally unique (content-based hash)
  • No coordination needed between creators
  • Merge-friendly across branches
  • Predictable length (configurable)

How Hashes Work

IDs are generated from:
  • Issue title
  • Creation timestamp
  • Random salt

Hierarchical IDs

For epics and subtasks:
Benefits:
  • Clear parent-child relationship
  • No namespace collision (parent hash is unique)
  • Up to 3 levels of nesting

ID Configuration

Configure ID prefix and length:

Collision Handling

While rare, collisions are handled automatically:
  1. On import, if hash collision detected
  2. Beads appends disambiguator
  3. Both issues preserved

Working with IDs

Migration from Sequential IDs

If migrating from a system with sequential IDs:

Best Practices

  1. Use short references - bd-a1b2 is usually unique enough
  2. Use --json for scripts - Parse full ID programmatically
  3. Reference by hash in commits - Fixed bd-a1b2 in commit messages
  4. Let hierarchies form naturally - Create epics, add children as needed