Copilot Studio Friction

Get notified when this record changes

One email when the status or the fix changes — double opt-in, no tracking, unsubscribe in every email.

Files won't pass from the agent into a flow

Mitigated(partially)since 8 July 2026

Works only from version 2025.7.2, and only with the exact Power Fx custom-value syntax.

Last verified

Details & related

Assessment

Confidence
Confirmed officialConfirmed by Microsoft documentation or an official statement.
Severity
Blocking
Typical time lost
Hours

Identification

Agent flowsAll channels

Verification & changes

  1. Verified

    Doc check by human: Official file-passing guidance and CAT blog post re-read during seed migration; version gate and Power Fx recipe still documented.

  2. Change

    Provisionally approved by the Product Owner; external LLM quality review pending.

  3. Change

    Initial record created from the seed dossier (migration wave 1).

Are you in the right place?

  • A user uploads a file, and an agent flow or connector should receive it.
  • The tool call fails, or the file input arrives empty in the flow.
  • You mapped the file input with "Dynamically fill with AI".
  • Or your setup throws an error although the configuration looks correct.

If instead a flow should send an image back → image return from a flow (record planned). If instead uploads never reach the agent in Microsoft 365 Copilot chat → see Uploaded files never arrive. If instead the call fails with FlowActionBadRequest on ordinary text inputs → see Flow fails with "FlowActionBadRequest".

What's happening

Passing files from an agent into flows and connectors works only from version 2025.7.2, documented as of 2026-07-08. Older versions throw an error on the very same configuration. Even on current versions, the file crosses only along one exact route. The file input accepts only a Power Fx formula through the "Custom value" option. "Dynamically fill with AI" cannot map a file. The formula must shape the file as a record with the keys contentBytes and name. And the question node's File entity needs the "Include file metadata" checkbox set. Miss any piece and the file never arrives. It is like customs paperwork: the parcel crosses the border only with the exact form, filled in the exact fields.

For technicians

Some connectors require wrapped file inputs, documented as of 2026-07-08. "Send an email (V2)" expects a table of records with contentBytes and name keys. Inside the flow, actions that expect binary content may need base64ToBinary() around the incoming content. The source in the topic is the File entity's stored variable (with metadata) or System.Activity.Attachments.

How to fix it

Solution 1

Official workaround

Pass the file with the documented Power Fx recipe

  1. Confirm your agent runs on Copilot Studio version 2025.7.2 or later.
  2. In your topic, open the question node that collects the file with the "File" entity.
  3. Set the "Include file metadata" checkbox on that entity.

✅ You should now see: the stored variable carries content plus file name, not bare content.

  1. Open the flow tool's file input in Copilot Studio.
  2. Switch the input from "Dynamically fill with AI" to "Custom value".
  3. Enter the file as a Power Fx record, exactly as documented:
{ contentBytes: Topic.userReceipt.Content, name: Topic.userReceipt.Name }

✅ You should now see: the input shows your formula as a custom value.

  1. In the flow, wrap the incoming content in base64ToBinary() where an action expects binary data.
  2. Save the flow.
  3. Save the topic.

Check that it worked

In the test pane, upload a small test file when the question node asks for it. Expected: the flow's run history shows a succeeded run, and the target action received the real file content.

If it didn't work

  • Your environment is older than 2025.7.2. The identical configuration errors on older versions. Check the version before touching the formula.
  • The input fell back to "Dynamically fill with AI". Re-open the tool input and set "Custom value" again.
  • The record shape is off. The keys must be contentBytes and name, spelled exactly like that.
  • The flow action expects binary. Add base64ToBinary() around the content inside the flow.

Prevent it next time

  • Keep the documented file recipe (metadata checkbox, custom value, record shape) as a saved snippet for your team.
  • Decide the full file route — into the flow and back out — before you build the topic.
  • After every platform update, retest the file path once; version-gated features are drift-sensitive.

Evidence

  • Official documentationlearn.microsoft.com

    The official guidance passes files as a Power Fx custom value shaped as a record with contentBytes and name keys, wrapped where a connector requires it.

  • Microsoft statementmicrosoft.github.io

    Microsoft's CAT team states file passing to flows and connectors works from version 2025.7.2 and may require base64ToBinary() inside the flow.