feat(hooks): emit session:start and session:end lifecycle events#1432
Closed
bayrakdarerdem wants to merge 1 commit into
Closed
feat(hooks): emit session:start and session:end lifecycle events#1432bayrakdarerdem wants to merge 1 commit into
bayrakdarerdem wants to merge 1 commit into
Conversation
teknium1
added a commit
that referenced
this pull request
Mar 17, 2026
Based on PR #1432 by @bayrakdarerdem. session:start was already on main; this adds the session:end event. Co-authored-by: bayrakdarerdem <bayrakdarerdem@users.noreply.github.com>
Contributor
|
Merged via PR #1725. The |
angelburgosrosado
pushed a commit
to angelburgosrosado/hermes-agent
that referenced
this pull request
Apr 27, 2026
Based on PR NousResearch#1432 by @bayrakdarerdem. session:start was already on main; this adds the session:end event. Co-authored-by: bayrakdarerdem <bayrakdarerdem@users.noreply.github.com>
02356abc
pushed a commit
to 02356abc/hermes-agent
that referenced
this pull request
May 14, 2026
Based on PR NousResearch#1432 by @bayrakdarerdem. session:start was already on main; this adds the session:end event. Co-authored-by: bayrakdarerdem <bayrakdarerdem@users.noreply.github.com>
olympus-terminal
pushed a commit
to olympus-terminal/hermes-agent
that referenced
this pull request
May 16, 2026
Based on PR NousResearch#1432 by @bayrakdarerdem. session:start was already on main; this adds the session:end event. Co-authored-by: bayrakdarerdem <bayrakdarerdem@users.noreply.github.com>
Open
1 task
gweeteve
pushed a commit
to gweeteve/hermes-agent
that referenced
this pull request
Jun 2, 2026
Based on PR NousResearch#1432 by @bayrakdarerdem. session:start was already on main; this adds the session:end event. Co-authored-by: bayrakdarerdem <bayrakdarerdem@users.noreply.github.com>
Egavasyug
pushed a commit
to Egavasyug/hermes-agent
that referenced
this pull request
Jun 10, 2026
Based on PR NousResearch#1432 by @bayrakdarerdem. session:start was already on main; this adds the session:end event. Co-authored-by: bayrakdarerdem <bayrakdarerdem@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The gateway hook system has had session:start listed in its documentation since day one — but it was never actually emitted. Any plugin author who wrote a hook listening for session:start would get silence. This PR fixes that disconnect and adds a companion session:end event that was also missing.
Changes
gateway/run.py
Emits session:start on the first message of a new session (detected by checking if transcript history is empty)
Emits session:end just before session:reset so hooks can clean up or persist data before the session is destroyed
gateway/hooks.py
Updated docstring to accurately list both new events
Clarified the distinction between session:end (session is closing) and session:reset (new session entry has been created)
Why This Matters
The hook system is designed for extensibility — plugins subscribe to lifecycle events and react accordingly. A session boundary is one of the most fundamental events in any agent system. Without session:start and session:end, plugins have no way to:
Initialize per-session state
Persist session analytics
Send welcome or goodbye messages
Clean up resources when a conversation ends
This is a small but foundational fix for the plugin ecosystem.