{"record":{"id":"0622b4c383df17b8","repo":"microsoft/semantic-kernel","slug":"messagehandlercontext-cannot-be-instantiated-it-i","errorCode":null,"errorMessage":"MessageHandlerContext cannot be instantiated. It is a static class that provides context management for message handling.","messagePattern":"MessageHandlerContext cannot be instantiated\\. It is a static class that provides context management for message handling\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/agents/runtime/in_process/message_handler_context.py","lineNumber":18,"sourceCode":"# Copyright (c) Microsoft. All rights reserved.\n\nfrom collections.abc import Generator\nfrom contextlib import contextmanager\nfrom contextvars import ContextVar\nfrom typing import Any, ClassVar\n\nfrom semantic_kernel.agents.runtime.core.agent_id import AgentId\nfrom semantic_kernel.utils.feature_stage_decorator import experimental\n\n\n@experimental\nclass MessageHandlerContext:\n    \"\"\"Context for message handlers.\"\"\"\n\n    def __init__(self) -> None:\n        \"\"\"Instantiate the MessageHandlerContext class.\"\"\"\n        raise RuntimeError(\n            \"MessageHandlerContext cannot be instantiated. It is a static class that provides context management for \"\n            \"message handling.\"\n        )\n\n    _MESSAGE_HANDLER_CONTEXT: ClassVar[ContextVar[AgentId]] = ContextVar(\"_MESSAGE_HANDLER_CONTEXT\")\n\n    @classmethod\n    @contextmanager\n    def populate_context(cls, ctx: AgentId) -> Generator[None, Any, None]:\n        \"\"\"Populate the context with the current agent ID.\"\"\"\n        token = MessageHandlerContext._MESSAGE_HANDLER_CONTEXT.set(ctx)\n        try:\n            yield\n        finally:\n            MessageHandlerContext._MESSAGE_HANDLER_CONTEXT.reset(token)\n\n    @classmethod\n    def agent_id(cls) -> AgentId:","sourceCodeStart":1,"sourceCodeEnd":36,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/agents/runtime/in_process/message_handler_context.py#L1-L36","documentation":"MessageHandlerContext is a static class (like AgentInstantiationContext) that provides the current agent ID during message handling via a ContextVar. Its __init__ unconditionally raises RuntimeError. It exposes a classmethod agent_id() and a context manager populate_context() for internal runtime use.","triggerScenarios":"Calling MessageHandlerContext() directly, e.g. `ctx = MessageHandlerContext()`. The __init__ raises before any state is set.","commonSituations":"A developer discovers the class and assumes it is a data holder or context object to be instantiated and passed around, rather than a static accessor.","solutions":["Do not instantiate the class. Use MessageHandlerContext.agent_id() to access the current agent ID from within a message handler.","The runtime sets the context automatically when dispatching messages to handlers."],"exampleFix":"# before\nctx = MessageHandlerContext()\n\n# after\nagent_id = MessageHandlerContext.agent_id()  # call as classmethod inside a handler","handlingStrategy":"validation","validationCode":"# This is a static class — never instantiate it.\nfrom semantic_kernel.agents.runtime.in_process.message_handler_context import MessageHandlerContext\n# Correct: use classmethods directly\nagent_id = MessageHandlerContext.agent_id()","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Treat MessageHandlerContext as a static accessor, never as a constructor.","Use the classmethods (agent_id, populate_context) only."],"tags":["agent-runtime","static-class","message-handler","contextvar","semantic-kernel"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}