Context
Feedback from an extended tab management session using tabctl (list → close → group-assign → merge-window workflow). Managed 49 tabs across 3 windows: closed 30, created 5 groups, merged 2 windows down to 1.
Friction points
1. Positional args on close fail silently
tabctl close 123 456 789 # exit code 1, zero output
Expected: Usage hint like error: use --tab <id> to specify tabs
2. group-assign without --create gives unhelpful error
error: Group not found
hint: Use tabctl group-list to see existing groups.
Expected: Add tip: use --create to create a new group
3. merge-window flag names are not guessable
Tried --window/--into before discovering --from/--to. Consider adding aliases.
4. No way to move individual tabs between windows
Had to use group-assign (moves tab as side effect) or merge-window (moves everything). A tabctl move-tab --tab X --to-window Y would fill this gap.
5. Multi-window group-assign error could be more helpful
error: Multiple source windows. Provide --window to create a new group.
Expected: Add tip: create the group in one window first, then assign cross-window tabs to it by name
Feature ideas (AI agent use case)
tabctl list --flat
Flat list without window/group nesting — one tab per line with window and group as fields. Much easier for agents to parse and filter.
tabctl close --group "name"
Close all tabs in a group at once instead of enumerating tab IDs manually.
tabctl list --summary
Quick counts per window/group without full tab details. Useful for orientation.
Stdin piping
tabctl list --flat --json | jq ".[] | select(.groupTitle == null) | .tabId" | tabctl close --stdin
Enable powerful composition with standard Unix tools.
tabctl status
One-liner health check: window count, tab count, group count.
What works great
- Compact JSON output is clean and complete
- Tab IDs are stable throughout a session
--confirm on close is good safety
--create flag on group-assign is a nice create-or-assign pattern
- Group colors make visual organization intuitive
- Skill integration works well for the agent workflow loop
Context
Feedback from an extended tab management session using tabctl (list → close → group-assign → merge-window workflow). Managed 49 tabs across 3 windows: closed 30, created 5 groups, merged 2 windows down to 1.
Friction points
1. Positional args on
closefail silentlytabctl close 123 456 789 # exit code 1, zero outputExpected: Usage hint like
error: use --tab <id> to specify tabs2.
group-assignwithout--creategives unhelpful errorExpected: Add
tip: use --create to create a new group3.
merge-windowflag names are not guessableTried
--window/--intobefore discovering--from/--to. Consider adding aliases.4. No way to move individual tabs between windows
Had to use
group-assign(moves tab as side effect) ormerge-window(moves everything). Atabctl move-tab --tab X --to-window Ywould fill this gap.5. Multi-window
group-assignerror could be more helpfulExpected: Add
tip: create the group in one window first, then assign cross-window tabs to it by nameFeature ideas (AI agent use case)
tabctl list --flatFlat list without window/group nesting — one tab per line with window and group as fields. Much easier for agents to parse and filter.
tabctl close --group "name"Close all tabs in a group at once instead of enumerating tab IDs manually.
tabctl list --summaryQuick counts per window/group without full tab details. Useful for orientation.
Stdin piping
Enable powerful composition with standard Unix tools.
tabctl statusOne-liner health check: window count, tab count, group count.
What works great
--confirmon close is good safety--createflag on group-assign is a nice create-or-assign pattern