We're reclaiming inactive PDIs to keep them available for active builders. Learn what's changing, who's affected, and how to protect your work. Read More

Proactively finding Guarded Script violations before the phases begin?

tomato20250
Tera Contributor

Hi everyone,

Our instance is about to be / has been upgraded to one of the releases that include Guarded Script (KittyScript). I've read KB2944435 (Server-Side Sandbox Runtime Replacement) and I understand how it works:

  • The instance automatically records incompatible scripts in the Incompatible Guarded Scripts list, and the system creates automatic exemptions before each phase transition.
  • However, in the "Why a Phased Rollout?" section, the article makes clear that only scripts that actually execute during a detection window are captured, and that no static scan can produce a complete list of affected scripts, since some scripts can originate at runtime (e.g., a javascript: expression passed as a URL filter parameter).

I fully understand this limitation and I'm not expecting to catch 100%. My goal is simply to minimize risk as much as possible: proactively find and fix as many scripts as I can up front (especially those that live in configuration records on the instance), and leave the small remainder (mostly the runtime-originated ones) to be handled by the phased rollout + exemption mechanism.

My questions:

  1. Is there an official ServiceNow tool, or a community-recommended approach, to statically scan configuration records (filters/conditions on business rules, UI actions, reports, scheduled jobs, ACLs, etc.) in order to find scripts that are likely to violate Guarded Script?
    • Per the KB, the blocked constructs are: variable declarations (var/let/const), control flow (if/switch/for/while), function declarations, assignment operators (=), and multiple statements in a single script. The suspect areas also include: javascript: prefixes in filters/conditions or passed to addQuery(), code evaluated via GlideEvaluator/GlideScopedEvaluator with withEnforcedSecurity(true), and AMB/RecordWatcher conditions with complex expressions.
  2. If no tool exists yet, does anyone have suggestions for building a custom script that scans the configuration tables to surface suspicious candidates (based on patterns such as containing ;, var , if(, javascript:, etc.) for manual review? (I'm aware this would produce false positives/negatives — I'd only use it to narrow down what needs reviewing.)
  3. On a sub-production instance, beyond deliberately running infrequent workflows (quarterly/annual) so they get detected, are there any other best practices to help "force" more scripts to surface during Phase 1?

Thanks in advance.

0 REPLIES 0