diff --git a/src/core/services.py b/src/core/services.py index fceafdba..f255df82 100644 --- a/src/core/services.py +++ b/src/core/services.py @@ -342,7 +342,23 @@ async def build_container(config: Dict[str, Any]) -> ServiceContainer: signal_bus.register_sink(DBExecutionSink(db)) signal_bus.register_sink(EventBusSink(event_bus)) # ── Notification / alerting sinks ───────────────────────────────── - signal_bus.register_sink(InAppSink(db)) + # Whitelist: only actionable system events reach the bell panel. + # Chat, memory, sandbox, tool, RAG, and audit events are excluded. + _NOTIF_TOPICS = { + "approval.requested", + "approval.resolved", + "approval.approval_requested", + "approval.approval_granted", + "approval.approval_denied", + "task.task_failed", + "task.task_timeout", + "agent.agent_failed", + "policy.policy_violation", + "security.auth_failure", + "security.permission_denied", + "security.sandbox_policy_violation", + } + signal_bus.register_sink(InAppSink(db, topic_filter=_NOTIF_TOPICS)) signal_bus.register_sink(WebhookSink(db)) signal_bus.register_sink(SlackSink(db)) signal_bus.register_sink(WebSocketSink())