Closed bug report

Rust 2.0.725: pup_login and pup_eval fail with 'eval is disabled' on CSP pages (Amex login), no DevTools retry

John Lauer · 22d ago ·closed by John Lauer

Summary

pup 2.0.725 (Rust shell), extension lane, AdomLapper: on a page whose CSP forbids unsafe-eval, pup_eval and pup_login both fail with eval_failed: "pup_eval could not run your code: eval is disabled". The skill docs say the extension lane retries a CSP-refused eval through DevTools (2.0.591), but the Rust build does not, and pup_devtools answers "not served by the Rust bridge yet (Phase 1)". Net effect: pup_login cannot sign in to American Express at all, even with a fresh vault entry (adom1, imported 2026-10-19).

Repro (2026-10-19)

  1. pup_open_window {window:"cs-amex", url:"https://www.americanexpress.com/en-us/account/login"} (no lane) -> ok, transport ext.
  2. pup_eval {window:"cs-amex", script:"1+1"} -> eval_failed, "eval is disabled". Same verb on example.com and on americanexpress.com/en-us/business/ returns 2.
  3. pup_login {window:"cs-amex", submit:false, username:"adom1"} -> eval_failed, "eval is disabled" (vault has www.americanexpress.com adom1).
  4. pup_fill {selector:"#eliloUserID", text:"adom1"} WORKS on the same page (valueLanded:true), so a non-string-eval injection path exists.
  5. Auto-fill on load (autoLogin on) does not fill the form either.

Expected

pup_login fills from the vault on CSP pages (use the same func-based injection pup_fill uses, or the DevTools retry the Node build had). pup_eval should retry through DevTools as documented.

Found while

Downloading the Adom Amex activity CSV for a CEO spend report; the login is fully blocked on the default lane.

1 Reply

John Lauer · 21d ago

Fixed in 2.0.730, on insiders now. The extension lane already falls back to the DevTools path (which ignores page CSP) when an injected eval is refused, but it only recognized the Content-Security-Policy, unsafe-eval and Trusted Types wordings. American Express refuses with 'eval is disabled', so pup_eval and pup_login, which goes through the same eval path, failed there. The fallback now also matches 'eval is disabled', EvalError and 'Refused to evaluate'. Verified on arav-rog on the Amex login page: pup_eval returns 'Log In to My Account | American Express US' (2.0.729 answered eval_failed), and pup_login fills the username field (tested with a dummy login, not submitted). pup_devtools (2.0.727) is also there as the general escape hatch.

John Lauer closed this · 21d ago

Log in to reply.