Chanced upon this thread during my debugging
After a few hours of hard work, it finally works!
Assumptions
1. Assuming you already have access to Copilot Studios, and created the Copilot Studio Agent created
2. Assuming you have access to Power Automate (non-premium is fine)
HOW TO MAKE IT WORK
1. In your Copilot Studio Agent
IMPORTANT: Turn on the "File Uploads" capabilities
go to your Copilot Studio > Agent > Settings (Top right, not the gear icon, but the button with the word "Settings")
then go to "Generative AI" tab (default opened page as of 4 September 2026), under "File processing capabilities" > "File uploads", toggle it ON
Image for reference:
I spent hours trying before turning this on to no avail... Until I realised while browsing the settings that this exists.
2. In your Power Automate Flow
Create "Execute Agent and wait"
Then, in the "A list of attachments" block, put this:
{
"contentType": @{item()?['contentType']},
"contentUrl": "data:@{item()?['contentType']};base64,@{item()?['contentBytes']}"
}
Note: I am for-looping over my attachments from my email... but the structure is the same, you require the keys "contentType" and "contentUrl".
The structure of the contentUrl is a string, formatted with the correct "data:{contentType};base64,{contentBytes}"
Note: although the email item is contentBytes, it is actually the Base64. For context, mine looks like "JVBER...==", with the double-equal sign at the end.
Note: "content" and "contentBytes" do not work as keys for the "Execute Agent and wait" block. ONLY "contentUrl" with the above formatting works. Accurate as of 4 September 2026...
Run it with your agent, and it should give you your expected results :)