diff --git a/internal/mail/bd.go b/internal/mail/bd.go index eefb8520..89c9f038 100644 --- a/internal/mail/bd.go +++ b/internal/mail/bd.go @@ -39,8 +39,14 @@ func (e *bdError) ContainsError(substr string) bool { // beadsDir is the BEADS_DIR environment variable value. // extraEnv contains additional environment variables to set (e.g., "BD_IDENTITY=..."). // Returns stdout bytes on success, or a *bdError on failure. +// +// Uses --no-daemon for faster read operations (avoids daemon IPC overhead). +// Uses --allow-stale to prevent failures when db is out of sync with JSONL +// (e.g., after daemon is killed during shutdown before syncing). func runBdCommand(args []string, workDir, beadsDir string, extraEnv ...string) ([]byte, error) { - cmd := exec.Command("bd", args...) //nolint:gosec // G204: bd is a trusted internal tool + // Prepend daemon bypass flags for performance + fullArgs := append([]string{"--no-daemon", "--allow-stale"}, args...) + cmd := exec.Command("bd", fullArgs...) //nolint:gosec // G204: bd is a trusted internal tool cmd.Dir = workDir env := append(cmd.Environ(), "BEADS_DIR="+beadsDir)