| Title | ag-ui-protocol ag-ui v1.0 CWE-346 |
|---|
| Description | The client's event application layer trusts the server stream for information that originates from the user side:
TEXT_MESSAGE_START carries any role, including user; the message is stored as-is (apply/default.ts:168-186) and returned to the server in the next request's messages (agent/agent.ts:385-399, prepareRunAgentInput).
MESSAGES_SNAPSHOT replaces the entire history with entries in any role, including developer/system (apply/default.ts:626-679).
Any RUN_FINISHED clears pendingInterrupts (apply/default.ts:924-927): a stream emitting RUN_FINISHED(interrupt) → RUN_STARTED → RUN_FINISHED(success) leaves no pending interrupt, so the next runAgent() proceeds without any resume — bypassing the guard at agent.ts:402-417. |
|---|
| Source | ⚠️ https://github.com/ag-ui-protocol/ag-ui/issues/2437 |
|---|
| User | meraklbz (UID 87053) |
|---|
| Submission | 08/18/2026 04:29 (29 days ago) |
|---|
| Moderation | 09/16/2026 07:36 (29 days later) |
|---|
| Status | Accepted |
|---|
| VulDB entry | 405446 [ag-ui-protocol ag-ui 1.0 Event Application Layer agent/agent.ts prepareRunAgentInput TEXT_MESSAGE_START origin validation] |
|---|
| Points | 20 |
|---|