Skip to content

Hermes: discover and deliver into the current active Codex turn #797

Description

@100yenadmin

Summary

Hermes can use the published LCO 1.6.1 MCP surface for indexed-session recall
and approval-gated control of an idle disposable Codex task, but it cannot yet
reliably discover and deliver into the Codex task whose turn is currently
running.

This is distinct from #795. The codex_thread: normalization fix is live and
passed an exact-candidate live-send canary against an idle disposable task.

Verified runtime evidence

  • Eva's isolated package is 1.6.1.
  • The active Hermes MCP connection succeeds and discovers 76 configured tools.
  • The strict Hermes smoke passes the 14 required first-class tools.
  • The exact 1.6.1 candidate completed one approval-gated live send using a
    public codex_thread: reference against an idle disposable task.
  • In a direct Hermes acceptance run, target selection and dry-run approval
    completed, but live lco_codex_send_message returned
    LIVE_SEND_INTERNAL_ERROR.
  • A follow-up read-only run could not find the current executing release task
    in lco_recent_sessions, reported stale/low-confidence inventory, and had no
    active-turn identifier or configured active-thread-state read tool.

Only public-safe aggregate status is retained. No thread identifiers, turn
identifiers, queries, transcripts, paths, credentials, or runtime
configuration are included.

Product gap

lco_codex_send_message starts a new turn and is appropriate for an idle
thread. A running task needs turn/steer, but the current Hermes-first facade
does not provide a reliable current-task discovery plus active-turn handle
flow. The one-shot stdio boundary also cannot be assumed to own the same
active app-server runtime.

Acceptance criteria

  • Add a public-safe read path that resolves the current active Codex task
    from live app-server state without requiring session reindexing.
  • Expose an opaque, approval-bindable active-turn reference without
    leaking raw thread or turn identifiers.
  • Add one Hermes-first delivery operation that deterministically chooses
    new-turn send for idle tasks and safe steer for running tasks, or returns
    a specific public-safe blocker before live mutation.
  • Preserve the fixed never-approve/read-only posture and existing dry-run
    audit/hash matching for the exact chosen action.
  • Prove bidirectional Hermes to LCO to active Codex delivery in an isolated
    canary with no Telegram involvement.
  • Keep all shared evidence free of raw identifiers, prompts, transcripts,
    paths, credentials, and runtime configuration.
  • Cover idle send, running steer, stale active-turn ref, ambiguous target,
    and no-current-target behavior.

Dependency and scope

Likely depends on or should be delivered with #787's managed local app-server
daemon transport. This belongs to the deeper native-Hermes/runtime lane, not a
retroactive blocker on the shipped 1.6.1 prefixed-reference hotfix.

Non-goals: Telegram routing, Remote Control enablement, GUI automation,
unattended control, Hermes profile changes, or database refresh as an implicit
side effect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    adapterAdapter work for Codex, Claude Code, CUA, Peekaboo, or other runtimescodexCodex session indexing or controlenhancementNew feature or requestmcpMCP server and tool surfaceorchestratorOrchestrator-agent workflow, context retention, and session managementsafetySafety, approval, privacy, or control-boundary issue

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions