<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4" -->

---
title: HarnessAgent now supports image inputs for all harness...
description: The AI SDK's HarnessAgent layer now accepts image inputs across every harness adapter. Images are passed alongside text using the standard AI SDK message...
canonical: https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: HarnessAgent now supports image inputs for all harness adapters | daily.dev
og:description: The AI SDK's HarnessAgent layer now accepts image inputs across every harness adapter. Images are passed alongside text using the standard AI SDK message...
og:url: https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4
og:image: https://api.daily.dev/og/posts/ffPbo7BQ4.png
og:image:alt: HarnessAgent now supports image inputs for all harness adapters
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# HarnessAgent now supports image inputs for all harness adapters

**[Vercel](https://daily.dev/sources/vercel)** · 1 min read · 1 upvotes · 1 comments

## Summary

The AI SDK's HarnessAgent layer now accepts image inputs across every harness adapter. Images are passed alongside text using the standard AI SDK message format: a content array mixing { type: 'text' } and { type: 'file' } parts. Image input is processed by each harness's underlying vision model and works across all available adapters, including Claude Code, Cline, Codex, Cursor, Deep Agents, fx, GitHub Copilot, Grok Build, OpenCode, and Pi. A code example shows the Codex harness being asked to describe an image in one sentence.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://vercel.com/changelog/harness-agent-image-inputs>

## Questions this post answers

### How do I pass an image to an AI SDK HarnessAgent session?

Include a file-type part in the content array of a user message, alongside any text parts. For example, pass { type: 'file', mediaType: 'image/png', data: readFileSync('image.png') } next to a { type: 'text' } part. The image is processed by the underlying harness's vision model, and this works across all available harness adapters including Claude Code, Cursor, Codex, Cline, and GitHub Copilot.

_Developers wiring multimodal input into coding agents can follow AI SDK updates like this on daily.dev._

### Which AI coding agent harnesses support image input in the AI SDK?

Image input is supported across all available harness adapters in the AI SDK's HarnessAgent layer: Claude Code, Cline, Codex, Cursor, Deep Agents, fx, GitHub Copilot, Grok Build, OpenCode, and Pi. The image is processed by each harness's underlying vision model, so support depends on that model's multimodal capability.

_Anyone comparing coding agent capabilities across tools can track changes like this on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@bickov** · 0 upvotes

> Does the SDK resize images before handing them to each harness, or pass the file as is? The limits differ. Claude 4.7 and later read up to 2576 px on the long edge, older Claude models 1568 px. A full page capture of 2540x18410 lands as 355x2576 on current Claude, so 16 px text ends up about 2.2 px tall. On an older model the same file becomes 216x1568.

## Similar posts on daily.dev

- [Program Claude Code, Codex, Pi and other agent harnesses with AI SDK](https://daily.dev/posts/program-claude-code-codex-pi-and-other-agent-harnesses-with-ai-sdk-o7afpazbb) · Vercel · 2 upvotes · 0 comments
- [Harness Engineering](https://daily.dev/posts/harness-engineering-l1sahcwor) · Martin Fowler · 4 upvotes · 0 comments
- [The Evolution of the Agent Harness](https://daily.dev/posts/the-evolution-of-the-agent-harness-1z25xrcos) · Latent Space · 8 upvotes · 1 comments

---

Tags: [#ai-agents](https://daily.dev/tags/ai-agents), [#vercel](https://daily.dev/tags/vercel), [#openai-codex](https://daily.dev/tags/openai-codex), [#multimodal](https://daily.dev/tags/multimodal), [#ai-sdk](https://daily.dev/tags/ai-sdk)

[View this post on daily.dev](https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"HarnessAgent now supports image inputs for all harness adapters","url":"https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4"},"datePublished":"2026-10-27T18:08:38.948Z","dateModified":"2026-10-27T18:43:33.270Z","description":"The AI SDK's HarnessAgent layer now accepts image inputs across every harness adapter. Images are passed alongside text using the standard AI SDK message...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/66c5ddabf459546b857d5a666ee6aa62?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/66c5ddabf459546b857d5a666ee6aa62?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Vercel","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Vercel","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/04cca7235cf84db092f24b7ba427b3e1","url":"https://daily.dev/sources/vercel"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"ai-agents,vercel,openai-codex,multimodal,ai-sdk","timeRequired":"PT1M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Vercel","item":"https://daily.dev/sources/vercel"},{"@type":"ListItem","position":3,"name":"HarnessAgent now supports image inputs for all harness adapters"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4","comment":[{"@type":"Comment","text":"Does the SDK resize images before handing them to each harness, or pass the file as is? The limits differ. Claude 4.7 and later read up to 2576 px on the long edge, older Claude models 1568 px. A full page capture of 2540x18410 lands as 355x2576 on current Claude, so 16 px text ends up about 2.2 px tall. On an older model the same file becomes 216x1568.","datePublished":"2026-10-28T08:11:04.799Z","url":"https://daily.dev/posts/ffPbo7BQ4#c-GcdUvV6Jk","author":{"@type":"Person","name":"ab","url":"https://daily.dev/bickov","image":"https://lh3.googleusercontent.com/a/ACg8ocKwOmJ31UWqM4ZXB5ms-yRdFR4BYzyb7FPBRpg1O6DV0MIAF2EP=s96-c"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/harnessagent-now-supports-image-inputs-for-all-harness-adapters-ffpbo7bq4#faq","mainEntity":[{"@type":"Question","name":"How do I pass an image to an AI SDK HarnessAgent session?","acceptedAnswer":{"@type":"Answer","text":"Include a file-type part in the content array of a user message, alongside any text parts. For example, pass { type: 'file', mediaType: 'image/png', data: readFileSync('image.png') } next to a { type: 'text' } part. The image is processed by the underlying harness's vision model, and this works across all available harness adapters including Claude Code, Cursor, Codex, Cline, and GitHub Copilot. Developers wiring multimodal input into coding agents can follow AI SDK updates like this on daily.dev."}},{"@type":"Question","name":"Which AI coding agent harnesses support image input in the AI SDK?","acceptedAnswer":{"@type":"Answer","text":"Image input is supported across all available harness adapters in the AI SDK's HarnessAgent layer: Claude Code, Cline, Codex, Cursor, Deep Agents, fx, GitHub Copilot, Grok Build, OpenCode, and Pi. The image is processed by each harness's underlying vision model, so support depends on that model's multimodal capability. Anyone comparing coding agent capabilities across tools can track changes like this on daily.dev."}}]}
```

