Skip to content

OMP lifecycle hook may not reacquire after exit and rerun in same pane #614

Description

@DarkPhilosophy

Is this a reproducible bug?

  • I confirm this is a reproducible bug, not a feature request, idea, question, contribution proposal, or direction check.

Current behavior

OMP reports correctly through herdr integration install omp on the first run in a Herdr pane. After exiting OMP and starting omp again in the same pane, OMP can fail to reappear in the Agents panel even though the OMP integration extension is installed and reporting.

While OMP is active, herdr agent explain shows lifecycle authority is active:

agent: omp
state: working
manifest: none unknown
rule: none
screen_detection_skip_reason: full_lifecycle_hook_authority

Expected behavior

A fresh omp process in the same pane should reacquire OMP lifecycle authority and appear in the Agents panel again.

Reproduction

  1. Start Herdr.
  2. Open a pane.
  3. Run omp.
  4. Confirm OMP appears in the Agents panel.
  5. Exit OMP.
  6. In the same pane, run omp again.
  7. Observe that OMP may not reappear in the Agents panel.

Impact

The pane can look like ordinary terminal activity after restarting OMP, so the Agents panel stops being reliable for OMP status after an exit/rerun cycle.

Environment

  • Herdr version: 0.6.10-preview.2026-06-12-7ba4bfe90e7a
  • Update channel: preview
  • Operating system: Linux 6.17.7-ba29.fc43.x86_64 / Fedora-based
  • Terminal: Herdr pane
  • Shell, if relevant: not shell-specific
  • Relevant config, if any: herdr integration status reports omp: current (v2)

Possible root cause

This looks related to full lifecycle hook suppression after release. OMP reports as source = "herdr:omp", agent = "omp", and Herdr treats that pair as full lifecycle authority. On exit, pane.release_agent reaches release_agent_with_mutation, which calls suppress_full_lifecycle_hook_report(source, agent_label). If the next OMP run reports the same source/agent without a distinct session id, full_lifecycle_hook_report_is_suppressed may ignore the new run as the old released lifecycle hook.

Relevant code paths:

  • src/terminal/state.rs: release_agent_with_mutation
  • src/terminal/state.rs: suppress_full_lifecycle_hook_report
  • src/terminal/state.rs: full_lifecycle_hook_report_is_suppressed
  • src/detect/mod.rs: full_lifecycle_hook_authority("herdr:omp", "omp")

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions