Building and customizing solutions using Microsoft 365 Copilot APIs and tools
URLs in agent responses are percent-encoded when delivered via Direct Line, but display correctly in the Copilot Studio test panel.
Hello,
We are seeing URLs in our agent's responses change between the Copilot Studio test panel and what is delivered through Direct Line.
Example: - Source URL (in our Custom Data / topic output): https://example.org/Q&A+Guide.pdf - Copilot Studio test panel: link displays and opens correctly - Direct Line activity text (verified in Postman, so this is not our backend): https://example.org/Q&A%2BGuide.pdf
Characters such as "+" are converted to their percent-encoded form (%2B) in the delivered response. The behavior is inconsistent: some responses are encoded and others are not.
This is a problem because we cannot reverse it reliably. If a URL legitimately contains "%2B", decoding the delivered text also changes that URL. After encoding, we cannot tell whether the platform added the %2B or it was in the original URL.
Our questions: 1. Is there a setting, configuration, or response format that keeps URLs exactly as provided in the topic output? 4. Why is it inconsistent between responses? 5. What is the recommended way to deliver URLs containing "+", "&", or "%" unchanged to a Direct Line client?
Environment details: - Product: Copilot Studio agent with generative orchestration - Channel: Direct Line (confirmed in Postman as well as our client) - Setup: topics return text through Topic.answeredValue (autoSend: false)
Thank you.