diff --git a/internal/cmd/handoff.go b/internal/cmd/handoff.go index 023fc838..99d1c24c 100644 --- a/internal/cmd/handoff.go +++ b/internal/cmd/handoff.go @@ -316,7 +316,17 @@ func resolvePathToSession(path string) (string, error) { // Just "/polecats" without a name - need more info return "", fmt.Errorf("polecats path requires name: %s/polecats/", rig) default: - // Not a known role - treat as polecat name (e.g., gastown/nux) + // Not a known role - check if it's a crew member before assuming polecat. + // Crew members exist at //crew/. + // This fixes: gt sling gt-375 gastown/max failing because max is crew, not polecat. + townRoot := detectTownRootFromCwd() + if townRoot != "" { + crewPath := filepath.Join(townRoot, rig, "crew", second) + if info, err := os.Stat(crewPath); err == nil && info.IsDir() { + return fmt.Sprintf("gt-%s-crew-%s", rig, second), nil + } + } + // Not a crew member - treat as polecat name (e.g., gastown/nux) return fmt.Sprintf("gt-%s-%s", rig, secondLower), nil } }