GlideLens

Chrome & Edge · for ServiceNow developers

Press \
anywhere in ServiceNow.

A command palette over the platform you already work in. Search the script the instance's own index can't see, read what actually runs on a catalog item, and replay a form interaction after it has happened.

GLIDELENS
    move jump to it this palette works — try it

    Same commands as the real thing. In ServiceNow they run; here they scroll.

    Catalog

    Reads
    catalog_script_client
    catalog_ui_policy
    catalog_ui_policy_action
    Where
    Service Portal

    What affects this catalog item

    Open a catalog item and get every client script and UI policy bound to it or its variable sets, grouped by the variable they watch. Rows that cannot fire while ordering — inactive, or scoped to RITM and Task views only — are flagged, so "why isn't my script running" answers itself before you open a single record.

    group by variable ⚠ won't run here open in platform read-only

    Interactive demo — fictional data, real panel. Try Group by variable, Active only, or search laptop_model.

    What affects this catalog item

    Catalog client scripts and catalog UI policies bound to this item or its variable sets. Read-only — nothing here runs or edits the logic.

    0shown 0active 0inactive 0won't run here

    Rows flagged ⚠ are active but scoped away from the catalog form — the usual answer to "why isn't my script running".

    Catalog

    Reads
    item_option_new
    catalog_ui_policy_action
    Shortcut
    Alt + double-click

    Per-variable insight icons

    An icon beside every variable on the form. Click one and the panel narrows to that variable alone: the onChange scripts watching it, and what each UI policy does to it — hides, mandatory, read-only, sets value. Attribution is matched on sys_id, not guessed from script text.

    per-variable scope show all to clear

    Catalog

    Covers
    Hidden-type
    UI Policy hidden
    Not rendered

    Show variable values

    Every variable on the item with its current value, variable sets included — and crucially the ones you cannot see. Filter to hidden to find the variable a policy quietly set behind your back.

    hidden / visible filter read-only

    Interactive demo — fictional data, real panel. Switch to Hidden, or try Non-empty.

    Variable Values Best effort

    Every variable on this catalog item with its best-effort current value. Hidden = permanently Hidden-type, switched off by a UI Policy or client script, or not rendered.

    0variables 0hidden 0visible

    Read-only inspector — does not modify the live form.

    Debugging

    Captures
    g_form
    GlideAjax
    field events, errors

    Debug Timeline

    Record one page's interaction and read back what happened: public g_form calls, native field events, GlideAjax timing, and JavaScript errors on a filterable timeline. Best-effort by design — it shows you what ran, not which script ran it, and says so rather than guessing.

    GlideAjax rows carry what you would otherwise open the Network tab for: the Script Include, the method, every parameter added, and the decoded response, next to how long the call took and in order with the rest of the interaction — rather than pieced back together from a list of XHRs. Parameter and response names that read like secrets are redacted before anything is shown.

    single page params · response reversible patches secrets redacted

    Interactive demo — fictional trace, real panel. Open a GlideAjax row for its params and response.

    Debug Timeline Best effort

    ServiceNow form activity correlated across the frames that were available during this interaction.

    0events 2frames 2.4sduration

    Stacks identify runtime calls, not guaranteed Client Script or UI Policy names.

    Forms

    Reads
    sys_documentation
    sys_translated_text
    Resolves
    inherited fields

    Translation records, one click away

    A globe on every label, for the label, plural and hint. Alongside it, a languages glyph — but only on fields whose dictionary type can actually hold per-record value translations, so an icon appearing means there is somewhere for it to go. The defining table is resolved by walking super_class, so a field inherited from task lands on the right dictionary record rather than a dead end.

    label · plural · hint value translations
    A ServiceNow form with a globe icon beside every field label, and a languages glyph beside Name only — the one field on the form that can hold value translations.

    Install

    Four steps, once.

    Not on the Chrome Web Store — you load it unpacked from a folder. After this, updating is a download and one click. Edge works too; use edge://extensions throughout.

    1. Download the ZIP

      On the repository, click the green Code button, then Download ZIP.

    2. Extract somewhere permanent

      Your browser reads the folder every time it starts, so don't leave it in Downloads. C:\Users\you\BrowserExtensions\GlideLens is a good home. Make sure manifest.json sits directly inside the folder you pick — GitHub wraps everything in an inner folder.

    3. Load unpacked

      Go to chrome://extensions, turn on Developer mode, click Load unpacked, and select that folder.

    4. Pin it

      Click the puzzle-piece icon in the toolbar and pin GlideLens. Then open any ServiceNow tab and press \.

    Updating. Download the new ZIP over the same folder, hit reload on the extension card, and refresh your ServiceNow tab so the content script reloads.

    Nothing leaves your browser. The extension only activates on *.service-now.com, reads through your own session, and has no server of its own.

    What this isn't

    Deliberately narrow.

    It is not a general ServiceNow toolbelt, and it does not try to become one. Update set switching, impersonation and environment badges are well served by tools that already exist, so they stay out of scope. This aims squarely at the gaps: catalog and Service Portal debugging, dictionary inheritance, form introspection, and the script no index reaches.

    Everything it reads goes through the Table API on your own session, with your own permissions — there is no server, no account and no telemetry. It never writes and never runs your scripts. Code search shows the matching lines and one line either side, and redacts hits whose field names read like secrets.