Skip to content

[FEATURE]: Navigation to parent session from child/subagent sessions #3291

@Astn

Description

@Astn

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

[FEATURE]: Navigation to parent session from child/subagent sessions

Current Behavior

OpenCode currently supports session navigation via keybindings for cycling through child sessions:

  • ctrl+right (session_child_cycle): Cycles forward through child sessions (e.g., subagent sessions spawned via @mentions).
  • ctrl+left (session_cycle_reverse): Cycles backward through child sessions.

These allow switching between sibling child sessions within a parent. However, there is no dedicated keybinding to quickly navigate upward to the parent session from a child/subagent session. Users must rely on alternatives like the session list modal (<leader>l, where leader is ctrl+x by default) to switch back, which interrupts workflow.

Keybindings are customizable via the keybinds section in the config file (e.g., ~/.config/opencode/config.json), but no predefined options exist for parent navigation.

Problem

When working in a subagent/child session (e.g., after delegating a task to a specialized agent), users frequently need to return to the parent session to review context, delegate further, or integrate results. The lack of a direct upward navigation forces less efficient methods, like listing all sessions or interrupting flow. This is especially cumbersome in complex workflows with nested subagents.

Existing cycle keybindings (ctrl+left/right) work well for horizontal navigation among children but don't address vertical (parent/child) hierarchy. Platform-specific conflicts (e.g., #2816 on macOS where ctrl+left/right clashes with OS desktop switching) also suggest any new bindings should consider configurability and alternatives like cmd+ support (#653).

Proposed Solution

Introduce new configurable keybindings for vertical session navigation:

  • session_parent: Navigate to the parent session from a child (suggested default: ctrl+up).
  • session_child_return: Return to the last active child session from the parent (suggested default: ctrl+down), or cycle through children if multiple are active.

This would create an intuitive "up/down" metaphor for hierarchy, complementing the existing "left/right" for siblings. To address potential conflicts:

Alternatives Considered

  • Expand session list modal: Allow quicker selection of parent via a dedicated shortcut in the modal, but this still requires opening the list.
  • Tree-view navigation: A more advanced TUI feature to visualize parent/child relationships, but that's a larger scope—start with simple keybinds. A visual of the session trees could be added later.

Implementation Thoughts

What do folks think? Any concerns with defaults or better key suggestions?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions