Usage
Description
Manage dependencies between issues. Dependencies define blocking relationships, parent-child hierarchies, and other issue connections.Subcommands
add
Add a dependency between two issues.The dependent issue (the one that is blocked)
The dependency (the blocker). Can be:
- Local issue ID (e.g.,
bd-xyz) - External reference:
external:<project>:<capability>Can also be specified via--blocked-byor--depends-onflag.
Dependency type:
blocks, tracks, related, parent-child, discovered-from, until, caused-by, validates, relates-to, supersedesAlternative to positional arg (same as
depends-on-id)Alias for
--blocked-byremove (rm)
Remove a dependency.list
List dependencies or dependents of an issue.Direction:
down (dependencies), up (dependents)Filter by dependency type
tree
Show dependency tree.Direction:
down (dependencies), up (dependents), both (full graph)Maximum tree depth to display
Filter to only show issues with this status
Output format:
mermaid for Mermaid.js flowchartShow all paths to nodes (no deduplication for diamond dependencies)
cycles
Detect dependency cycles.Examples
Add Dependencies
External Dependencies
List Dependencies
Dependency Tree
Cycle Detection
JSON Output
dep add
dep list
dep tree
dep cycles
Dependency Types
blocks
blocks
Blocking relationship: Issue A depends on (is blocked by) Issue B. Issue A cannot be closed until B is closed.Default type when not specified.
parent-child
parent-child
Hierarchical relationship: Used for epics and subtasks. Child issues inherit the parent’s completion dependency.Created automatically with
--parent flag in bd create.discovered-from
discovered-from
Discovery tracking: Links newly discovered issues to their source investigation.Example: Bug found during feature development.
tracks
tracks
Tracking relationship: Issue A tracks progress of Issue B (used in convoy patterns).
related
related
relates-to
relates-to
Alias for
relateduntil
until
Temporal dependency: Issue A depends on B until a condition is met.
caused-by
caused-by
Causation tracking: Issue A was caused by Issue B (e.g., bug caused by feature).
validates
validates
Validation relationship: Issue A validates Issue B (e.g., test validates feature).
supersedes
supersedes
Replacement relationship: Issue A replaces Issue B.
External References
External references allow cross-project dependencies:Format
Examples
Resolution
External refs are resolved at query time usingroutes.jsonl configuration:
- Check if capability is “shipped” in target project
- Block if not shipped
- Unblock when shipped
External refs are stored as-is in the database. The
external_projects config maps project names to their database locations.Tree Visualization
Terminal Output
Mermaid Diagram
Cycle Detection
Cycles hide issues from ready work and cause confusion:Anti-Patterns
Child→Parent Dependency
- Child can’t start (parent open)
- Parent can’t close (children not done)
- Deadlock!
Best Practices
For Agents
- Use
discovered-fromto link bugs found during work - Check cycles after adding dependencies
- Use external refs for cross-project dependencies
- Verify dependencies exist before adding
For Humans
- Keep dependency types semantic (blocks for blocking, tracks for tracking)
- Use parent-child for true hierarchies
- Avoid deep trees (>5 levels) - flatten if possible
- Document external refs in issue description
Dependency Hygiene
Related Commands
bd ready- Find unblocked workbd blocked- Show blocked issuesbd create --deps- Create with dependenciesbd update --parent- Reparent issues