Skip to content

Support session visibility independently of parentage #39911

Open

Description

@kitlangton

Problem

Some integrations create durable internal sessions that need normal execution, persistence, API access, logs, and debugging, but should not appear in user-facing session pickers or recent-session history by default.

Today an integration can avoid opening a TUI tab, but the resulting top-level session still appears in global session discovery. Using parentID to hide it would conflate two independent dimensions:

  • Parentage describes structural or conversational ownership between sessions.
  • Visibility describes whether a session is presented in ordinary user-facing discovery UI.

A background controller may be top-level but hidden. A child session may still be intentionally visible. These combinations should remain representable.

Desired behavior

  • Session creation can explicitly mark a session as hidden/internal without assigning a parent.
  • Hidden sessions remain addressable by ID through the API and available to logs, traces, and debugging tools.
  • Ordinary session pickers and recent-session lists exclude hidden sessions by default.
  • Administrative/debug discovery can include hidden sessions explicitly.
  • Opening a hidden session directly by ID remains possible.
  • Visibility does not change execution, persistence, deletion, or parent/child semantics.

API shape to explore

This needs design rather than assuming a final field name. One possible direction is a persisted session presentation/visibility value plus an includeHidden session-list filter. The durable representation should avoid deriving visibility from title, agent, or parentID.

Motivation

OpenCode Voice uses a durable controller session so delegated actions remain observable and debuggable. It can keep that session out of the tab strip, but cannot currently keep the active internal controller out of the session picker without deleting it or misrepresenting it as a child session.

Activity

  1. szzhoujiarui commented on Aug 1, 2026

    @szzhoujiarui

    Hi, I would like to work on this if the following design direction matches what you have in mind.

    I propose adding a persisted session visibility value (normal / hidden), defaulting to normal, and exposing it on session creation. Session list APIs would exclude hidden sessions by default and support an includeHidden query option that is preserved in pagination cursors.

    Direct lookup by ID would remain unchanged. Parent/child traversal and deletion would explicitly include hidden sessions, while ordinary TUI and app discovery would filter hidden sessions from both list responses and live session events.

    I would add focused coverage for persistence/migration, list filtering and pagination, direct lookup, parentage independence, deletion, and user-facing discovery.

    Would this design be acceptable, and may I take the issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions