Short answer: this isn't a missing setting, it's a mechanism mismatch. In Copilot Studio, an Adaptive Card only renders when it's attached to a node in a topic. It will never render just because the model (or a skill/tool) emits card JSON into its text response. Generative orchestration produces text, and it has no path to turn JSON inside that text into interactive UI, so you get exactly what you're seeing: the raw JSON printed as a message. That's why "instruct the agent to render a card" and "prompt it to display the JSON" can't work in principle.
Answering your specific questions:
1) Does the new experience support Adaptive Cards? Yes. Two supported paths:
- To collect input, use an Ask with Adaptive Card node. The card must contain at least one Submit button, and Copilot Studio auto-generates output variables from the card's input fields, so all submitted values (Name, Email, Department, Employee ID, Description, etc.) land in variables in a single submit. This is exactly your form use case.
- For display-only content, attach a card to a Message node as an attachment.
Both are available directly for agents now, no Bot Framework Composer needed.
2) Is HTML rendering supported? No. The conversation surface renders Markdown for text and Adaptive Cards for rich UI. Raw HTML comes through as plain text, so HTML isn't the route for a form.
3) Recommended way to collect multiple inputs at once: the Ask with Adaptive Card node, as above. Two things to lock down early:
- Schema version by host: Copilot Studio supports schema 1.6 and earlier, but default Web Chat supports 1.6 Without Action.Execute, and Teams + Omnichannel live chat are capped at 1.5. Author to your actual channel's ceiling.
- Give each Submit action unique identifying data so multiple visible cards don't cross-fire.
4) Limitation or misconfiguration? Neither, really, cards render via nodes, not via model output.
The part that trips people up in generative-orchestration agents (where you don't want rigid topic flows): build a simple topic containing the Adaptive Card node, expose it so the orchestrator can trigger it, and capture submitted values as topic output variables. For cards whose fields aren't known at design time, construct the card JSON dynamically (Power Fx, or a Power Automate/HTTP call that returns the card — return it as plain text, not a JSON response object) and read the submission via System.LastActivity.Value. If you ever need to swap the orchestrator's outgoing message for a card, there's an advanced OnGeneratedResponse + System.Response.FormattedText interception pattern.
Hope that helps.