{"repo":"NousResearch/hermes-agent","public_id":"60050","display_label":"Plugin lifecycle, reload, and hook delivery fixes","summary":"These items address plugin registration and deregistration correctness, force-reload cleanup of global registries, hook delivery consistency across surfaces, and race condition prevention in the plugin manager. Work spans both new lifecycle infrastructure and targeted bug fixes.","subsystem":"agent","counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":3,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":84923},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-08-13T02:13:33+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.27199999999999996},"fix_edges":[{"issue_number":24714,"pr_number":84923,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":24754,"pr_number":84923,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":60050,"pr_number":84923,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":60050,"title":"Bug: Plugin force-reload does not deregister tools/platforms from global registries","url":null,"state":"closed"},{"kind":"issue","number":64178,"title":"fix(plugins): hook delivery parity across all surfaces + symmetric force-reload","url":null,"state":"closed"},{"kind":"issue","number":64229,"title":"feat(plugins): lifecycle — registration handles, ownership ledger, on_unload, supervised tasks","url":null,"state":"closed"},{"kind":"pr","number":60051,"title":"fix(plugins): deregister plugin tools/platforms from global registries on force-reload","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"22af80bcfdc","number":0},{"kind":"commit","value":"b9542f8e1fd","number":0},{"kind":"pr","value":"#60050","number":60050},{"kind":"pr","value":"#84923","number":84923}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":84923,"title":"feat(plugins): ownership ledger, on_unload, supervised tasks — profile-isolated","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/agent_init.py","agent/browser_registry.py","agent/image_gen_registry.py","agent/secret_sources/registry.py","agent/tool_executor.py","agent/transcription_registry.py","agent/tts_registry.py","agent/video_gen_registry.py","agent/web_search_registry.py","docs/ADR.md","gateway/authz_mixin.py","gateway/platform_registry.py","gateway/run.py","hermes_cli/dashboard_auth/registry.py","hermes_cli/env_loader.py","hermes_cli/plugins.py","hermes_cli/tools_config.py","hermes_constants.py","model_tools.py","registration_lifecycle.py","tests/conftest.py","tests/gateway/test_google_chat.py","tests/hermes_cli/test_plugin_ownership_ledger.py","tests/hermes_cli/test_plugins.py","tests/secret_sources/test_error_remediation.py","tests/secret_sources/test_secret_source_registry.py","tests/test_get_tool_definitions_cache_isolation.py","tests/tools/test_browser_cloud_provider_cache.py","tools/browser_tool.py","tools/registry.py","toolsets.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}