Skip to content

ao gap: session displayName has no first-class path to the harness session title #28

Description

@polymath-orchestrator

Gap (documented per the vanilla rule — no ao change made)

Found while implementing #21 (sessions self-name). The orchestration layer now keeps session names in sync across surfaces, but only via a workaround, because ao lacks a primitive for it:

  1. ao spawn --name / ao session rename set the ao displayName, but nothing propagates it to the harness session title (the name in the Claude Code session list / /resume picker). The claude-code CLI supports --name <title> at launch and a /rename slash command mid-session; ao's claudecode adapter uses neither.
  2. Workaround in use (verified live 2026-07-06): the session itself runs tmux send-keys -t <session-id> -l '/rename <name>' + Enter against its own pane — same injection path ao send uses. Works, including mid-turn, but it is instruction-layer glue depending on CLI UI behavior, not a contract.
  3. Related visibility gap: ao session ls text output does not show displayName at all (it appears only in ao session get --json / the dashboard), so a renamed session is invisible in the CLI list.
  4. Known adjacent bug, already tracked upstream (Session rename accepts display names longer than the 20-character cap that spawn enforces AgentWrapper/agent-orchestrator#2375, fix PR fix(session): enforce 20-char display name cap on rename AgentWrapper/agent-orchestrator#2383): the CLI rename path skips the 20-char maxDisplayNameLen cap that spawn and the HTTP API enforce.

Upstream-shaped proposal

  • ao spawn passes the display name through to harnesses that support a session title (claude-code: --name).
  • ao session rename (or a --sync-harness flag) forwards the rename to the harness title where the harness supports it.
  • ao session ls shows displayName in the text table.

Labelled agent:noauto deliberately: the workaround in #21 covers the fleet need; remove the label when we want to schedule the upstream-shaped change.

Metadata

Metadata

Assignees

No one assigned

    Labels

    no-aoOpt OUT of ao auto-pickup entirely — ao never works thistaskNon-feature work item

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions