This page covers Shadow AI discovery. To import prompts and tool calls from AI
coding agents with Falcon Guardian, see CrowdStrike Falcon
Guardian. The two connect
separately.
The CrowdStrike connector is turned on separately from Shadow AI discovery. If
it isn’t in the Connectors dialog, reach out to
us to turn it on.
What Openlayer reads
- DNS requests your Falcon sensors recorded for the domains of AI services in the catalog, grouped by device, process, and hour.
- The process behind each request: its executable path and user, from the event that started it.
- No content. No prompts, responses, or files are read.
Prerequisites
- Shadow AI discovery and the CrowdStrike connector turned on for your deployment.
- Falcon Next-Gen SIEM, with your Falcon endpoint telemetry searchable in it.
- A Falcon admin who can create an API client.
- Someone who can set an environment variable where Openlayer runs. If Openlayer hosts your deployment, that’s us.
Set up
1
Create an API client in Falcon
In the Falcon console, open API clients and keys and click Add new API client. Give it
the NGSIEM scope with both Read and Write. Openlayer starts searches, which needs
Write, so Read alone isn’t enough. The client doesn’t need any other scope.Copy the client ID and secret. Note your Falcon cloud region too. Your console’s address shows
it:
falcon.us-2.crowdstrike.com is US-2, falcon.eu-1.crowdstrike.com is EU-1, and
falcon.crowdstrike.com, with no region, is US-1. Ask your Falcon admin if you’re unsure.2
Put the secret in an environment variable
Set the client secret in an environment variable where Openlayer runs, such as
OLGA_CROWDSTRIKE_CLIENT_SECRET, and restart Openlayer. If Openlayer hosts your deployment,
coordinate with us to set it.The admin portal stores only the variable’s name, never the secret.3
Connect CrowdStrike
In the admin portal, go to Shadow AI → Discovery, click Connect, and choose
CrowdStrike Falcon. Fill in:
- Region: your Falcon cloud: US-1, US-2, US-3, EU-1, US-GOV-1, or US-GOV-2.
- API client ID: the client ID from the first step.
- Client secret env var: the variable from the previous step. It defaults to
OLGA_CROWDSTRIKE_CLIENT_SECRET. - NG-SIEM repository: keep
search-allunless we suggest otherwise.investigate_viewneeds Falcon Insight XDR. - Member CID (optional): for MSSPs only, the child tenant to read. Leave it empty to read the API client’s own tenant.
How Openlayer collects
- It searches every hour. Click Sync now on the connector card to start a run immediately. Only one run happens at a time.
- The first run reads back up to 7 days, or as far as your NG-SIEM retention reaches, if that’s less. Later runs start 3 hours before where the last one stopped, so telemetry that a sensor uploads late is still counted, and read up to the last complete hour.
- It runs two searches for each hour. The first finds DNS requests to AI services, grouped by process. The second looks up each process’s executable path and user from the event that started it, over the whole lookback, so apps started days earlier still resolve. A process is looked up once and then cached.
- It maps executable paths to client tools, such as Claude Code, Claude Desktop, Cursor, ChatGPT Desktop, OpenAI Codex CLI, GitHub Copilot CLI, Windsurf, VS Code, and the major browsers. A process it can’t look up keeps its executable name and an unknown user. The connector card shows what share of DNS requests were matched to a process.
- It skips lookups made on behalf of other apps. VPN clients, the Cloudflare One Client, the Zscaler Client Connector, and system DNS resolvers resolve domains for every app on a device, so their lookups can’t be attributed and are dropped.
- It never double-counts. Re-reading an hour leaves the same rows, so overlapping runs count nothing twice.
- It reports incomplete data. A search that hits Falcon’s result limit is split by device and run again. An hour that’s still truncated after splitting is stored and shown as partial on the card. If Openlayer couldn’t collect for longer than the lookback, the missing hours are shown as a coverage gap, never as zero.
How findings appear
- Findings are counted in active hours. An active hour is one user, one client tool, one device, and one AI service seen together in an hour. It isn’t a prompt or a request count.
- Findings list the devices and client tools that reached each service.
- A service with 40 or more active hours in the range you’re viewing, seen recently, has its risk raised by one level. See Risk.
- Falcon telemetry has no blocked attempts.
The connector card
Open Connect on the Discovery page to see the CrowdStrike card. It shows:- The region and repository Openlayer verified, and the rows found in the test hour.
- When it last synced, and how far its coverage reaches.
- What the last run did: hours read, rows stored, and the share of DNS requests matched to a process.
- Warnings for partial hours and coverage gaps.
- Errors, each with a suggested fix.
Disconnecting
Disconnecting CrowdStrike deletes its stored rows and its process cache. So does reconnecting to a different tenant: another client ID, region, or member CID. That tenant’s history is then collected afresh. Reconnecting the same tenant keeps everything.Limitations
- Only devices that run the Falcon sensor are covered.
- An hour counts only if the device looked up the service’s domain during it. An app that keeps one connection open for hours may not look the domain up again.
- On devices where a VPN or secure web gateway client resolves DNS for every app, lookups can’t be attributed to a client tool, and are dropped.
- No prompt or file content is available.
Troubleshooting
The error names a missing scope
The error names a missing scope
In Falcon, open API clients and keys, edit the API client, and grant
NGSIEM with both Read and Write. Then click Sync now on the
card.
The credentials are rejected
The credentials are rejected
Check the client ID, and that the environment variable where Openlayer runs
holds that client’s secret. After you change the variable, restart
Openlayer.
The error mentions investigate_view
The error mentions investigate_view
investigate_view needs Falcon Insight XDR. Disconnect, and connect again
with the search-all repository.The error mentions the region
The error mentions the region
Disconnect, and connect again with your Falcon cloud region. See Create an
API client in Falcon for how to tell which region you’re on.
Few DNS requests are matched to a process
Few DNS requests are matched to a process
Openlayer looks processes up within the lookback. Processes that started
before it, such as long-running apps on devices that rarely restart, keep
their executable name and an unknown user.