Visual context

Keep screenshots and image results in context

A UI bug, chart, design reference, or browser result often cannot be explained by text alone. InstaShare keeps supported images attached to the relevant turn instead of dropping them from the shared record.

Images remain in the timeline

Pasted screenshots and captured tool-result images appear where the session referenced them.

Faster transcript loading

Large base64 payloads are extracted from JSONL into Azure Blob Storage and replaced by URLs.

Full-size inspection

Rendered thumbnails link to the underlying image so a reader can inspect detail in a new tab.

Why images are extracted

Claude Code may store pasted images as base64 directly inside a session record. Keeping every encoded payload inside the MongoDB transcript would make documents large and slow to send to the browser. InstaShare detects supported image blocks, uploads the decoded bytes to Azure Blob Storage, and rewrites the record to reference the blob URL.

Blob names are derived from a SHA-256 content hash, so identical image bytes map to the same stored name. The public viewer lazy-loads images and constrains their display size while preserving access to the full asset.

Images have a different privacy boundary

Image blobs are publicly readable assets referenced by the share page. They may also be cached by browsers or intermediary infrastructure. Deleting a share requests deletion of its recorded image blobs, but copies already downloaded or retained in caches may not disappear immediately.

The text redaction patterns do not inspect pixels. A screenshot containing a password, API key, customer record, private message, or personal information can be uploaded unchanged.

Supported formats and fallbacks

PNG, JPEG, WebP, and GIF receive conventional file extensions and content types. If extraction fails, the server leaves the original base64 block in the transcript so the viewer can attempt a data-URL fallback instead of silently discarding the image.

How it works

01

Detect image blocks

The server walks message and nested tool-result content arrays.

02

Decode supported base64

The payload becomes image bytes while its media type is retained.

03

Store and rewrite

The blob is uploaded and the JSONL block is replaced with its URL.

04

Render in context

The viewer places a lazy-loaded image beside the originating turn.

Important limits

  • Secret redaction is text-pattern based and does not scan or OCR image contents.
  • Image URLs are public assets and can outlive a browser session through normal caching behavior.

Try it in a Claude Code session.

Install the readable skill, then say “share this chat” when the conversation is ready.