Channels: allow an image param on notifications/claude/channel

Status Open
Reported on v2.1.267
Maintainer reply None cached
Activity 0 comments · opened Sep 10, 2026

Request

notifications/claude/channel takes params: { content: string, meta?: Record<string,string> }. A channel plugin that bridges a chat network (Telegram in our case) receives photos with captions, but can only deliver the caption as text; the model then has to call a tool to fetch the file and a second one to read it.

Precedent already in the binary: notifications/message (Chrome extension) accepts params.image: { type: "base64", media_type: image/jpeg|png|gif|webp, data }. The same optional field on notifications/claude/channel would let a channel deliver a photo as a real image block in the same turn as its caption.

Why it matters

Chat channels are image-heavy (screenshots, photos of whiteboards, receipts). Today every image costs two extra tool calls and a round trip before the model can see it. Channel prompts are also enqueued with skipAttachments: true, so an @path mention in content is not expanded either, which is fine for trust reasons but leaves no path to a native image block.

Proposal

  • params.image?: { type: "base64", media_type: "image/jpeg" | "image/png" | "image/gif" | "image/webp", data: string } (or images?: [...]), rendered as an image block after the <channel> text.
  • Apply the existing image size limits; ignore or reject unsupported types.
  • Document it on the channels reference page next to content and meta.

Version: Claude Code 2.1.267 (Bun single-file build on Linux).

View original on GitHub ↗