Problem
In Linear Agent Sessions, when a user posts an image (comment/description), the inbound payload does not carry it as a typed Attachment or as a multimodal UserContent image part. It arrives as a plain markdown image reference embedded in the text body, e.g.:

This is built in messageFromLinearAgentSessionEvent inside the Linear channel (eve/channels/linear). Because the model only receives the raw markdown URL as text, it cannot see the image content — it has no vision input for it. The eve docs for the Linear channel also state today: "Inbound file attachments are not supported on this channel today."
This is inconsistent with the Telegram and Slack channels, where inbound photos/files are normalized into image FileParts the model can actually see.
Two additional wrinkles specific to Linear:
- The Linear GraphQL
Attachment object is a different thing — it represents integration attachments (GitHub/Figma/Slack links), not inline images pasted into a comment/description, so it can't be used to detect these images.
uploads.linear.app URLs are private and require Authorization: Bearer <token> (a Linear API/agent access token) to fetch the bytes — a signed query-string alone isn't enough from a plain unauthenticated fetch in all cases, so any fix needs access to the channel's configured Linear credential resolver at the point these URLs are parsed.
Expected behavior
Similar to Telegram/Slack: when messageFromLinearAgentSessionEvent builds the inbound message, it should detect uploads.linear.app markdown image references in the event body, fetch the bytes using the channel's authenticated Linear client, and attach them as image parts on the UserContent sent to the model — instead of leaving them as inert markdown text.
Workaround
We're currently carrying a local pnpm patch against the installed eve package to inject this behavor, because the conversion point lives inside eve itself and can't be reached from consumer code (e.g. via onAgentSession, which can only add context, not rewrite the inbound message). This is brittle — the patch needs to be manually ported forward on every eve version bump, and we'd like to drop it once this is handled upstream.
Happy to share the patch/approach we're using if useful as a starting point.
Problem
In Linear Agent Sessions, when a user posts an image (comment/description), the inbound payload does not carry it as a typed
Attachmentor as a multimodalUserContentimage part. It arrives as a plain markdown image reference embedded in the text body, e.g.:This is built in
messageFromLinearAgentSessionEventinside the Linear channel (eve/channels/linear). Because the model only receives the raw markdown URL as text, it cannot see the image content — it has no vision input for it. The eve docs for the Linear channel also state today: "Inbound file attachments are not supported on this channel today."This is inconsistent with the Telegram and Slack channels, where inbound photos/files are normalized into image
FileParts the model can actually see.Two additional wrinkles specific to Linear:
Attachmentobject is a different thing — it represents integration attachments (GitHub/Figma/Slack links), not inline images pasted into a comment/description, so it can't be used to detect these images.uploads.linear.appURLs are private and requireAuthorization: Bearer <token>(a Linear API/agent access token) to fetch the bytes — a signed query-string alone isn't enough from a plain unauthenticated fetch in all cases, so any fix needs access to the channel's configured Linear credential resolver at the point these URLs are parsed.Expected behavior
Similar to Telegram/Slack: when
messageFromLinearAgentSessionEventbuilds the inbound message, it should detectuploads.linear.appmarkdown image references in the event body, fetch the bytes using the channel's authenticated Linear client, and attach them as image parts on theUserContentsent to the model — instead of leaving them as inert markdown text.Workaround
We're currently carrying a local
pnpm patchagainst the installedevepackage to inject this behavor, because the conversion point lives insideeveitself and can't be reached from consumer code (e.g. viaonAgentSession, which can only add context, not rewrite the inboundmessage). This is brittle — the patch needs to be manually ported forward on everyeveversion bump, and we'd like to drop it once this is handled upstream.Happy to share the patch/approach we're using if useful as a starting point.