[Feature Request] Add image upload progress indicator and upload lifecycle hooks

Resolved 💬 3 comments Opened Jan 20, 2026 by eliaslebid Closed Jan 24, 2026

Bug Description
Feature Request: Image Upload Progress Indicator & Hook

Current behavior:
When pasting/uploading images in Claude Code, there's no visual feedback during the upload process. The user sees nothing until the image is
fully uploaded and processed.

Requested features:

  1. Built-in upload progress indicator - Show a spinner or progress bar with percentage while images are being uploaded/processed
  2. New hook event: ImageUpload or PreImageProcess - Allow users to trigger custom scripts when image upload starts/completes, similar to

existing hooks like UserPromptSubmit and PreToolUse

Why this matters:

  • Large images can take several seconds to upload
  • Users may think the app is frozen or their paste didn't work
  • No way to provide visual feedback since no hooks exist for image events
  • Current workaround using UserPromptSubmit hook fires after upload is complete

Proposed hook structure:
{
"ImageUploadStart": [...],
"ImageUploadProgress": [...], // with progress % in context
"ImageUploadComplete": [...]
}

Environment: Claude Code CLI on macOS

Environment Info

  • Platform: darwin
  • Terminal: alacritty
  • Version: 2.1.12
  • Feedback ID: 1bcb77be-65d7-4839-a4ca-b10032fed455

Errors

[{"error":"AxiosError: Request failed with status code 404\n    at aP (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:39:1137)\n    at Unzip.<anonymous> (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:44:9852)\n    at Unzip.emit (node:events:519:35)\n    at Unzip.emit (node:domain:489:12)\n    at endReadableNT (node:internal/streams/readable:1696:12)\n    at process.processTicksAndRejections (node:internal/process/task_queues:90:21)\n    at v$A.request (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:46:2130)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async Ii2 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2805:2763)\n    at async Wi2 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2805:3788)\n    at async Object.call (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2807:4641)\n    at async It5 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2700:19680)","timestamp":"2026-01-20T19:46:47.940Z"}]

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗