Skip to main content
3. Existing Functionality/Native Skill

Add Support For Multiple Files In Agent Studio File Slots

Related products:Agent Studio
  • June 18, 2026
  • 9 replies
  • 75 views

This blog post https://www.moveworks.com/us/en/resources/blog/file-slots-file-uploads#one-file-per-slot-no-overwriting states: 

“Right now, you can only upload one file per File Slot. And once it’s uploaded, the user can’t replace it — they’d have to start over.

This is a limitation we built in, not something forced on us. We could support multiple files, we just haven’t yet.”


I’m currently building out employee submitted expense reports in agent studio and would love if they could just bulk upload all their receipts at once rather than 1 at a time. Multiple file support in a single slot would also significantly simplify my conversational workflow design since I wouldn’t need to create a slot for receipt 2, receipt 3, receipt 4, etc.



In fact, in the same blog post, expense reports are mentioned: “Think about what you can build: expense reports with receipts attached”


This capability would be great. Thanks!

9 replies

Kevin Mok
Forum|alt.badge.img+2
  • Community Manager
  • June 18, 2026

Hi ​@cfinelli - We actually already support multiple File slots, that’s a miss on my part on the docs and I’ll update them right now to showcase how to do multiple files with a List[File] slot


Kevin Mok
Forum|alt.badge.img+2
  • Community Manager
  • June 18, 2026
Updated idea status1. New3. Existing Functionality/Native Skill

Kevin Mok
Forum|alt.badge.img+2
  • Community Manager
  • June 18, 2026

The docs should be updated now!


  • Author
  • New Participant
  • June 22, 2026

The docs should be updated now!

 Thank you ​@Kevin Mok ! Glad to hear this is supported.

 

Hoping to have one plugin where a user uploads several receipts at once. Each file is a separate receipt that needs its own OCR pass via generate_structured_value_action and creates its own expense line — and some lines need a follow-up prompt to the user (attendees, booking reason) depending on what the OCR returns.

 

The two questions I have that decide the architecture:

  1. Can a single element of a List[File] slot be passed into generate_structured_value_action's image input — both (a) by index from a Conversation Process (e.g. data.receipts[0]), and (b) bound to the each variable inside a Compound Action for loop? The image input is documented as requiring "a File object retrieved via a File Slot," and I want to confirm a list element still qualifies in each context.
  1. Is there any supported way to prompt the user or collect a slot value per iteration of a for loop — or interleave user interaction with iteration at all? Or must all user interaction live in the Conversation Process before/after the Action Activity that runs the loop? Our per-receipt follow-up prompts are the whole value, so this determines whether iteration is even usable for us.

 

Thank you!


Kevin Mok
Forum|alt.badge.img+2
  • Community Manager
  • June 22, 2026

@cfinelli 

  1. Each LLM action only supports 1 image at a time, so you’ll need to run an llm action per image
  2. If you are talking about a for loop inside a compound action, then no. Compound actions are workflows that don’t stop, so there’s no way to stop it to have it collect slots from the user. All user interactions leaves at the Conversation Process level before any activity is executed.

  • Author
  • New Participant
  • June 22, 2026

@cfinelli 

  1. Each LLM action only supports 1 image at a time, so you’ll need to run an llm action per image
  2. If you are talking about a for loop inside a compound action, then no. Compound actions are workflows that don’t stop, so there’s no way to stop it to have it collect slots from the user. All user interactions leaves at the Conversation Process level before any activity is executed.

Thanks Kevin, this is really helpful — especially the confirmation on #2. Since the per-receipt follow-up prompts are essential for us, that rules out a compound-action for loop, so we'd keep everything in the Conversation Process.

The plan would be to run the LLM action per image as you noted, but unrolled in the Conversation Process (a separate OCR activity per receipt) rather than in a loop, so each OCR can be followed by its own conditional slot prompt. A few things I want to confirm for that approach:

1. Can I index a single element of a List[File] slot — e.g. data.receipts[0], data.receipts[1] — and pass it directly into generate_structured_value_action's image input, from a Conversation Process activity (no compound action)?

2. If I reference an index the user didn't fill (they upload 2 files but the process references data.receipts[2]), does that resolve to null/empty, or does it throw an error? I'd want to gate each index on whether the element exists.

3. Is there a max number of files a List[File] slot will accept, separate from the 5MB-per-file limit? We may limit this to support 5 receipts for now to avoid making the conversational process hundreds of lines long, but just curious on limits here. 

Thanks again!


Kevin Mok
Forum|alt.badge.img+2
  • Community Manager
  • June 22, 2026
  1. Yep
  2. It will throw an error so you’ll need to do some checks something along the lines of `IF data.receipts[1] THEN data.receipts[1] ELSE null`
  3. I didn’t see a limit on our end!

  • Author
  • New Participant
  • July 7, 2026

@Kevin Mok thanks so much for this, we have the vast majority of this built out and are planning our launch!


One last question I had was related to PDFs. As you could imagine a lot of expense receipts are in PDF format and we’ve seen some errors when folks upload them. Moveworks AI gave me the following:
 

PDF format is not supported by the image parameter
The mw.generate_structured_value_action (and the underlying GPT-4o vision model) only supports specific image formats for the image parameter. According to the LLM Actions documentation, the supported formats are strictly: PNG, JPEG/JPG, WEBP, and non-animated GIF.

When users upload a PDF to the File slot and it gets passed into the image argument, the vision model cannot natively 'see' or read the PDF document, resulting in poor or entirely failed extractions.


Do you have any recommended approach for how we can handle PDFs without having to use an external OCR? Thank you!


Kevin Mok
Forum|alt.badge.img+2
  • Community Manager
  • July 8, 2026

@cfinelli - We are looking to support PDFs, stay tuned I’ll update this thread once it’s ready