# 104009: Inbound message processing failed Identifier: `session_message_processing_failed` Processing a message that arrived on an AI Transport session's channel threw, so that one message was not folded into session state. The session's subscription survives, and it keeps sending and receiving. ## What you should do Inspect the `cause` for what threw. If it came from a codec of your own, fix it so it decodes the message rather than throwing. The session itself needs no intervention: only that one message failed, and its subscription is left in place, so there is nothing to reconnect. What the message carried never reaches session state, though, so anything built from it, such as a streamed reply or a run's status, can read as incomplete. You will not catch this from a call you made. Because it arises while the SDK is handling an inbound message, it is delivered to the session's error handler. ## Why it happens Every message arriving on the session's channel is decoded by the session's codec and folded into session state. This error is raised when that processing throws, with the thrown value preserved as the `cause`. The usual reason is a message the codec cannot decode, which most often means the two ends of the session are not using the same codec, or a custom codec is meeting a payload shape it does not handle. ## What you'll see The error is reported with code 104009 and status 500. Messages take the form `unable to process channel message; ...`.