Skip to main content
New Voice
Oct 22, 2026 9:56 AM UTC
Question

Focused view / embedded signing blocked since ~21 Oct 2026 — redirect to apps-d.docusign.com/authenticate has frame-ancestors that ignores frameAncestors


Environment
- Demo (developer) account b5fe314e-fdf1-4821-893f-5ce7dac2d8fc, integration key a6aa342b-4222-4dc9-9fb0-062ffae667dd
- Account settings report signingUiVersion: "2", betaSwitchConfiguration: "mandatory"
- Envelopes created from a server template; signer is an embedded recipient (clientUserId set, authenticationMethod: "none", no IDV/KBA/access code)
- Docusign JS from https://js-d.docusign.com/bundle.js, loadDocuSign(integrationKey) → signing({ url, displayFormat: 'focused' }) → mount(...)
- Chrome, host page http://bmw.localhost:8082 (local dev)

Recipient view request
{
  "returnUrl": "http://bmw.localhost:8082/vdr/folders/…",
  "email": "…", "userName": "…", "clientUserId": "…",
  "authenticationMethod": "none",
  "frameAncestors": ["http://bmw.localhost:8082", "https://apps-d.docusign.com"],
  "messageOrigins": ["https://apps-d.docusign.com"]
}

What happens
Until 20 Oct 2026 this worked: the focused view loaded and we received ready / sessionEnd: signing_complete (e.g. envelope c3e62098-9360-8784-8000-e0f6b7a814e1, completed 20 Oct 20:08 UTC).

Since 21 Oct, every session hangs on load and never emits ready. Chrome console:
Framing 'https://apps-d.docusign.com/' violates the following Content Security Policy
directive: "frame-ancestors 'self' https://demo.docusign.net". The request has been blocked.
Example envelopes: bd702729-845d-88b6-81e3-66b9f5ab158e, a7ab2935-6546-854c-818e-e0def5a1169f.

 


Redirect trace of a fresh recipient view URL (frame-ancestors per hop):

┌─────┬────────────────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────┐
│  #  │                                URL                                 │                        frame-ancestors                         │
├─────┼────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 1   │ demo.docusign.net/Signing/MTRedeem/v1/…                            │ — (302)                                                        │
├─────┼────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 2   │ account-d.docusign.com/managed_token/v1/redeem/…                   │ 'self' (302)                                                   │
├─────┼────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 3   │ demo.docusign.net/Signing/StartInSession.aspx?code=…               │ — (JS redirect, adds ifd=1)                                    │
├─────┼────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 4   │ demo.docusign.net/Signing/?insession=1&ti=…                        │ http://bmw.localhost:8082 https://apps-d.docusign.com ✅ (302) │
├─────┼────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 5   │ apps-d.docusign.com/authenticate?code=…&state=…&callbackURIProps=… │ 'self' https://apps-d.docusign.com ❌                          │
└─────┴────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────┘

So our frameAncestors are honoured at hop 4, but the session is then forwarded to the new signing app's authenticate endpoint, whose CSP doesn't include the host origin. That hop can never render inside the integrator's page.

The authenticate page's config for the /sign plugin includes a classic fallback:
"baselineUrl": "https://${site}/Signing/?ti=${ti}&bailout=auth_middleware"
That fallback never runs inside the iframe, because the frame is blocked first.

Also tried
- displayFormat: 'default' (classic with Docusign JS): same block.
- Opening the recipient view URL as a full page (no iframe): works, so we've switched to redirect-based signing as a workaround.
- There's no signing-experience toggle in the demo admin console; the account's beta switch is mandatory.

Questions
1. Is this a known regression in the new signing experience rollout on demo, and is a fix planned?
2. Will the same routing reach production? If so, how should Focused View integrators embed signing, or does apps.docusign.com/authenticate get the recipient view's frameAncestors added to its CSP?
3. Is there a supported way, per account, envelope or recipient view, to keep embedded sessions on the classic Signing/ page until this is resolved?
 

2 replies

New Voice
Oct 23, 2026 1:19 PM UTC

The browser blocks the frame with:

Framing 'https://apps-d.docusign.com/' violates the following Content Security Policy directive: "frame-src 'self' 
https://docucdn-a.akamaihd.net/ ,https://apps.docusign.com https://na.verify.docusign.net …". The request has been blocked.

That allowlist is the production one. It includes https://apps.docusign.com and the production *.docusign.net hosts, and it does not include https://apps-d.docusign.com. The demo ceremony still redirects to apps-d.docusign.com, so the iframe is rejected.

This happens for both displayFormat: "focused" and displayFormat: "default". The recipient is an embedded signer (clientUserId set). frameAncestors includes our app origin and https://apps-d.docusign.com, and messageOrigins is https://apps-d.docusign.com. Nothing in our envelope or recipient-view request changed when this started.

We need embedded signing to keep working inside our page. Opening the recipient-view URL as a full page is not a workable replacement for us.

Is this the same demo signing-experience regression reported here, and is there a fix or an account setting that restores framing of https://apps-d.docusign.com for docusign.js?

Translate
Docusign Employee
Oct 28, 2026 4:05 PM UTC

​@MA4LOUF Thanks for the detailed trace. Before treating this as a frameAncestors regression, please verify that the entire ceremony is using the Demo environment. For Demo, the bundle should be https://js-d.docusign.com/bundle.js, the recipient view URL should originate from demo.docusign.net, and the Docusign JS wrapper/iframe should use https://apps-d.docusign.com. If the iframe starts at https://apps.docusign.com, or a static or older bundle or window.environmentOverride selects the production wrapper, a production CSP can reject a Demo ceremony and produce this error. Please check the first iframe src and the actual Network response headers, not only the redirect chain.

Demo uses https://apps-d.docusign.com in messageOrigins, and frameAncestors must contain bare origins only. As a diagnostic, please retry from exactly http://localhost:<port> or an HTTPS staging origin, then capture the complete response headers for the blocked /authenticate document. That will distinguish an origin format issue from a server side CSP issue.

The host page cannot override a CSP returned by Docusign. If all Demo endpoints are aligned and /authenticate still returns a policy such as frame-ancestors 'self' https://demo.docusign.net, please open a case with Docusign support and provide the HAR, the first iframe URL, the blocked response headers, the Docusign JS version, and the account envelope IDs to Support for server side investigation. 
Docusign API logs would also be of value. 

Reference: Focused View guide and Docusign JS embedded signing reference.

Translate