/enterprise/orgs/{org_id}/signals) helps organization administrators find recurring AI-work patterns and investigate deterministic anomaly findings with the sessions behind them. Every org member can also open Configure Email Alerts & Cadence to manage personal alert preferences.
Date range
The page opens to the last 30 days. Set From and To dates or select Last 30 days to reset the range. The range applies slightly differently to each section:- The Signals matrix includes signal periods written during the selected window.
- Anomaly reports include findings whose latest occurrence falls inside the selected window.
- The selected To day is included; the frontend sends the following day as the API’s exclusive upper bound.
Signals matrix
Signals group recurring patterns by team and project so you can see where enablement, policy, or durable project context will have the most leverage. Each populated cell shows:- Projected tokens per week when the signal has an estimate.
- Open signal count when projected-token coverage is unavailable.
- A stronger color for a larger projected opportunity or open count within that matrix.
- Linked evidence sessions when the cell is clickable.
- P4 · Users with waiting sessions — sessions, qualifying wait events, maximum and total wait, the worst session, and a direct evidence-session link.
- Teams × patterns — concentration across a team, best used for shared conventions, policy, and enablement rather than individual performance review.
- Projects × patterns — concentration by codebase. Projects with the same configured display name are merged into one row.
How to investigate a Signal
- Find concentration — start with the darkest or largest populated cells.
- Choose the owner — team rows usually point to a policy or enablement owner; project rows point to a codebase owner; P4 user rows identify exact sessions to review.
- Open evidence — inspect linked sessions before deciding whether the pattern needs a change.
- Read the pattern details — select a code in What the pattern codes mean for examples, recommended admin actions, and interpretation guardrails.
Pattern catalog
Monthly CSV report
Select Export YYYY-MM CSV to download the current month’s organization-, team-, and project-scoped Signals. The report includes the period, scope, pattern, status, evidence count, idle minutes, measured opportunity tokens, and projected tokens. Member identities are not included.Anomaly reports
Anomaly reports are nightly deterministic checks over completed session data. They are not AI-generated classifications. The header shows the number of open findings and the number currently marked high or critical. Filter the list by:- Status: open, new, acknowledged, resolved, dismissed, or all.
- Severity: warning, high, critical, or all.
- Detector.
- The page-level date range.
Detectors
AD-001 — Usage baseline deviation
Daily session or token activity is materially above that member’s own rolling history. The detector compares each person with themselves over the previous 14 completed days using a guarded exponentially weighted baseline. A finding requires three conditions to align: a strong statistical deviation, a meaningful ratio above the member’s own baseline, and an absolute increase floor. Missing or inconsistent provider-reported coverage blocks the finding rather than producing a misleading result. Typical next steps: Confirm whether the increase matches planned work or an expected shift in role. Open the linked sessions to determine whether the volume is legitimate before deciding on any action.AD-002 — New technology fingerprint
A session contains a first-seen combination of dependencies, imports, manifests, tools, or project activity relative to that member’s prior 90-day history. A single new extension or provider is not enough; the detector requires a meaningful combination, such as a new package ecosystem together with a first-seen dependency, or a new project root with a new command family. Typical next steps: Check whether the technology belongs to a legitimate new project or role change. First-seen activity is not evidence of a policy violation.AD-003 — Runaway or looping session
A session shows repeated failures, identical retries, or activity far above the member’s normal session behavior. Deterministic sub-signals include: consecutive identical-input errors on the same tool, repeated failing operations on the same file, build or test failures without an intervening edit, abnormal tool-call volume, and abnormal duration. Severity escalates when two independent sub-signals fire together. Typical next steps: Open the evidence session and determine whether an agent configuration, failing command, or workflow needs intervention. The finding indicates operational waste or a stuck workflow, not malicious behavior.AD-004 — Sensitive file access
Sessions where an AI agent read, wrote, or referenced.env, .env.*, *.env, .envrc, certificate, or private-key files. Detection covers three surfaces:
- Direct tool access — native Read and Write tool calls where
primary_file_pathorfile_paths[]match a sensitive-file pattern. - Shell command access — paths extracted from
cat,head,tail,sed, andrgcommands, covering the most common real-world leak path. - Code and script mentions — text in agent-written files or tool outputs that references sensitive files:
load_dotenv(".env.production"),open(".env", "r"),source .env && ..., or similar constructs. This surface catches the case where the model writes a temporary Python or Bash script that reads or modifies an env file — a vector that never passes through a tool-call hook boundary and is therefore outside the standard hook DLP guarantee.
read, write, shell_read, code_mention) and whether hook DLP was active per tool call — never the actual file content or secret values.
Severity tiers:
- Warning — one or more sessions with a sensitive file read or
code_mention. - High — at least one session wrote to a sensitive file path or the code mention involves a write operation.
- Critical — multiple sessions have env-file activity and at least one had no DLP coverage, indicating a gap where secrets or a script referencing them may have reached an external model provider.
code_mention, open the linked session and determine whether the script was executed and whether that execution had DLP coverage. For direct or shell reads with was_redacted: false, determine whether secrets were transmitted to an external provider.
AD-005 — Proxy operation volume spike
A canonical proxy operation’s daily session volume is materially above the organization’s own recent daily history for that operation. The detector requires sufficient active-day history before it can fire, and compares the operation with its own baseline rather than with a global threshold. Evidence contains the operation title, bounded statistics, and a limited number of session identifiers — not request bodies, prompts, or provider credentials. Typical next steps: Confirm whether the operation’s increase is expected, then inspect the linked sessions for unexpected callers or inputs.AD-006 — New proxy operation
A canonical proxy operation title appears for the first time in the organization’s recent history, compared against the preceding 90 days of labeled activity. A sufficient baseline of prior labeled sessions is required before a title is treated as genuinely new. Typical next steps: Verify that the new operation belongs to an approved integration or workflow. First-seen title novelty is an invitation to verify, not evidence of a policy violation.AD-010…AD-013 — Coverage and tamper
These detectors report when ReclaimLLM protection is missing, turned off, or bypassed. AD-010, AD-011, and AD-013b appear on the next device check-in. AD-012, AD-013a, and AD-013c wait for the nightly anomaly job, so a same-day test stays empty until that run. Filter Anomaly reports by the detector code. The row title is the meaning (Hooks tampered or missing, DLP disabled, and so on). The code AD-010 is the stable id above that title. Coverage lists open AD-010, AD-011, AD-012, and AD-013b on the device row. AD-013a is a member finding and AD-013c is an org finding, so they show here and not on that device cell.
Calculation detail is in Anomalies and Coverage Alerts.
AD-010 — Hooks tampered or missing
Fires when a client that was alreadyinstalled later checks in as missing, partial, disabled, or modified, when the client sends an uninstall, or when the policy signature is invalid. The first check-in for a client is a baseline and does not fire. An rclm version change holds installed → missing or partial for 30 minutes. Severity is high when that user has hook sessions in the last 14 days, otherwise warning. The Signals title is Hooks missing: Cursor (client and new status), or Hooks tampered or missing when the client is not named.
1
Establish a baseline
Install hooks and check in once so the client status is
installed. Confirm Anomaly reports has no AD-010 row.2
Report the hooks gone
On a later check-in, report that same client as
missing (or send uninstall). The finding appears immediately on Signals and as AD-010 on the Coverage device row.3
Repair
Run
rclm-hooks-install --repair and check in with status installed. The finding resolves itself.Testing during the 30-minute upgrade window will not fire
installed → missing or partial. Wait out the grace period, or use disabled, modified, uninstall, or an invalid policy signature.AD-011 — DLP disabled
Fires on a check-in where DLP is off and there is no active DLP exception. Warning when Require DLP is off. High when Require DLP is on. Turning DLP back on resolves thedisabled finding. Sending --no-dlp while Require DLP is on creates a separate warning titled DLP opt-out attempted, even when the effective DLP flag stays on.
1
Check in with DLP off
Check in with DLP disabled and no DLP exception. Confirm a DLP disabled row on Signals and
AD-011 on Coverage.2
Raise severity
Turn on Require DLP in Coverage settings and check in again with DLP still off. The finding is high.
3
Clear it
Check in with DLP on. The
disabled finding resolves. An opt-out attempt while Require DLP is on stays as its own warning until you review it.AD-012 — Device silent
Nightly. The device must be a normal machine (not ephemeral, not retired), with check-ins or hook sessions on at least 3 weekdays in the last 10 business days, then quiet past the silence setting (default 2 business days). After the nightly job, the title is Device silent or Device silent (corroborated). Corroborated means that user still has gateway proxy traffic, or another of their devices checked in, during the quiet period. A laptop that is simply off, with no other activity, is the uncorroborated variant.1
Build a baseline
Use a durable device that has checked in or produced hook sessions on at least 3 weekdays in the last 10 business days.
2
Go quiet
Stop check-ins and hook sessions for longer than the silence setting (default 2 business days). Leave gateway traffic or another device active if you want the corroborated variant.
3
Wait for the nightly job
Open Anomaly reports the next day and filter AD-012. Coverage shows the open finding on that device row.
AD-013a — Gateway without hooks
Nightly. The org needs at least one proxy session that day. One user needs at least 3 proxy sessions and zero hook sessions (record_type = session) in the same day. The finding is on the member, so it appears in Anomaly reports and not in the Coverage device column. One hook session for that user in the same day keeps it quiet.
1
Send gateway traffic without hooks
Produce at least 3 proxy sessions for one user in the evaluation day, and no hook-captured sessions for that user.
2
Wait for the nightly job
Filter Anomaly reports by AD-013a. The subject is the member, not a device.
AD-013b — Direct provider routing
Fires on the next check-in when routing for a gateway required provider isdirect. unknown does not fire. With no required providers configured, this detector does not fire. The Signals title is Direct routing: plus the provider name.
1
Require a provider
In Coverage settings, set at least one gateway required provider, such as Anthropic or OpenAI.
2
Check in as direct
On the next device check-in, report that provider’s routing class as
direct. Confirm Direct routing on Signals and AD-013b on the Coverage device row.AD-013c — Provider usage unreconciled
Stays off until the org is Enterprise, Enable provider usage reconciliation is on, and a gateway key exists. The nightly job compares the previous day’s provider usage with gateway tokens. It fires high when provider usage is on a key that is not a gateway key, or when provider tokens are more than 1.1 times the gateway tokens for that key. A day with no provider usage row does not fire.1
Turn reconciliation on
In org settings, enable provider usage reconciliation and save an Anthropic or OpenAI admin key. Confirm a non-revoked gateway key exists.
2
Create a gap
For the previous UTC day, have provider-reported tokens on a key that is not a gateway key, or provider tokens above 1.1 times that key’s gateway tokens.
3
Wait for the nightly job
Filter Anomaly reports by AD-013c. The subject is the organization.
AD-015 — External network egress
Fires when a session initiates an outbound network connection to a non-local destination across any model or coding client. The detector inspects four surfaces:- Shell HTTP (
curl,wget,http/https,xh,aria2c,Invoke-WebRequest/Invoke-RestMethod) - Shell transfer & sockets (
scp,sftp,rsync,nc/ncat/netcat,socat,telnet,ftp,/dev/tcp/<host>/<port>) - Programmatic script egress (
python -c,node -e,ruby -e,perl -e,php -r, or agent-written files combiningrequests,urllib,httpx,aiohttp,socket,paramiko,fetch,axios, orhttp.requestwith an external URL or IP) - Native web fetch (
WebFetch,web_fetch,fetch_url,http_request)
localhost, 127.0.0.0/8, ::1, 0.0.0.0, host.docker.internal) are automatically ignored. Read-only native WebFetch calls fire as Warning; shell/script/transfer egress or raw IP literals fire as High; and outbound uploads (POST/PUT/PATCH/--data*/-F/-T/remote scp), cloud metadata SSRF probes (169.254.169.254), curl | sh execution chains, or egress in the same session as sensitive file access (.env, .ssh, keys) or /etc/resolv.conf recon fire as Critical.
Safe-listing trusted destinations: Admins can configure Allowed Egress URLs, Domains & IPs (AD-015 Safe List) in Configure Email Alerts & Cadence → Organization (accepting URLs, domains/subdomains, IPv4/IPv6 addresses, and CIDR ranges), or click Mark destination safe directly on an AD-015 finding card to allowlist its destination hosts/IPs and dismiss the finding. Cloud metadata SSRF endpoints can never be allowlisted.
Typical next steps: Review the sanitized destination_hosts, destination_ips, egress_methods, and model badges on the finding card, inspect the linked session, and either mark trusted corporate destinations safe or escalate unexpected external transfers.
AD-016 — PII content exposure
Fires when a session’s content — a gateway proxy request/response body or a hook/agent tool-call input/result — contains a validated email address, phone number, SSN, or credit card number. Matching is deterministic (regex plus a Luhn checksum for cards and SSA range rules for SSNs), not a model call. Severity differs by where the match was found: proxy traffic starts at High (the data already reached the model provider) and escalates to Critical on repeat sessions for the same member; hook/agent sessions start at Warning, rise to High with multiple categories or sessions, and only reach Critical when the same session also has an AD-015 external egress finding. Typical next steps: Check whether the match is a proxy or hook/agent finding, and checkchained_with_egress for hook/agent findings — a chained finding means the data was both touched and sent externally in one session. Open the linked session; matching tool calls and messages are automatically expanded and highlighted.
See Anomalies → AD-016 for the full calculation and evidence detail.
AD-017 — Proxy failure rate
Fires when the share of failing gateway calls (error responses plus streams that broke after starting) is well above the organization’s own recent rate. It is scored for the whole organization, for calls not yet labeled with an operation, and for each operation, every hour and every day. Hourly findings need two abnormal hours in a row. The organization-wide finding is High at a 50% failure rate or 5× the usual rate, and sends an immediate P0 email; everything else is a Warning in the digest. Typical next steps: Check whether the rise is organization-wide (often a provider outage, expired credential, or exhausted credits) or limited to one operation, then open the linked failing sessions and compare status codes.AD-018 — Proxy latency regression
Fires once a day when a model’s p95 and median latency on successful, non-streaming gateway calls are both well above that model’s own recent baseline. A single slow call cannot fire it, because the median must rise too. Typical next steps: Open the linked slowest sessions and compare input and output size with earlier days; if the work is unchanged, check provider status or a region or deployment change. See Anomalies → AD-017 and AD-018 for the full calculation, evidence, and the thresholds you can tune.Finding status workflow
- Acknowledge a new finding when it is under review.
- Resolve it when the relevant work or remediation is complete.
- Dismiss it when the finding is expected behavior or a false positive.
- Mark destination safe (on AD-015 findings with external hosts/IPs) adds the finding’s
destination_hostsanddestination_ipsto the organization’s AD-015 safe list and dismisses the finding. - Accept risk (when Compliance is enabled) creates a time-boxed
accepted_findingexception with a rationale and expiry (≤12 months), then dismisses the finding. Exceptions appear under Compliance → Exceptions. - Resolved and dismissed findings are closed and cannot transition to another status.
Email alerts & notification cadence
RCLM sends tiered email for workflow signals and deterministic anomalies: immediate P0 security notices, a daily digest, and a Monday weekly executive summary. Digests fire at 08:00 in the recipient’s local timezone (personal preference → organization timezone →America/Toronto).
Click Configure Email Alerts & Cadence in the Signals header. The modal has two tabs:
- Organization — admin-only routing and cadence policy (also available under Organization Settings → Email Alerts & Cadence)
- My alerts — personal preferences for every org member
/enterprise/orgs/{org_id}/signals?alerts=1 so the modal opens directly.
Delivery cadences
Organization configuration (admins)
- Security inbox — always receives AD-004 Critical and AD-015 Critical (unless all destinations on the
AD-015finding are covered by the org’s allowed egress safe list), even when security cadence is Off or the project is excluded. - Recipient inboxes — comma-separated addresses for org-wide alerts. If blank, notifications default to organization administrators.
- Organization timezone — fallback when a member has not set a personal timezone.
- Minimum severity —
All,High & Critical only, orCritical only. Findings below the threshold stay on the dashboard but are omitted from email. - Included anomaly detectors — toggle AD-001 through AD-006 and AD-015 through AD-018 (coverage keys such as AD-010…AD-013 appear when that product surface is enabled).
- Included workflow signals — toggle P1 through P10 for digests.
- Excluded projects / sandboxes — case-insensitive project-name filters. Names are used only for filtering; they are never rendered in email bodies.
- Allowed Egress URLs, Domains & IPs (AD-015 Safe List) — comma- or newline-separated URLs, domains (matching the domain and its subdomains), wildcards (
*.internal.corp), IP addresses, or CIDR ranges (10.0.0.0/8). Egress targets matching this list are excluded from AD-015 findings and alerts. Cloud metadata SSRF endpoints (169.254.169.254,metadata.google.internal) cannot be allowlisted. - Proxy Thresholds (AD-017/018) — a separate button in the Signals header, next to Egress Policy (AD-015). Adjust the minimum calls, failure and latency rise multiples, and the history needed before a model or window is scored. Blank fields use the defaults; see Anomalies → Tuning AD-017 and AD-018.
- Recent deliveries — last 50 delivery attempts with masked recipient addresses, tier, detector, severity, and status.
My alerts (every member)
- Enable or stop email alerts for yourself
- Set your own severity floor and toggles for immediate / daily / weekly
- Disable individual detectors or signal patterns
- Exclude projects and choose a personal timezone
- Developers and team leads receive alerts only about their own sessions; admins and explicit org recipients see org-wide findings
Zero-exfiltration payload
Alert email travels over ordinary mailboxes, so the body is deliberately thin. Emails may include: detector key and fixed title, severity, session counts, categorical file-pattern labels (for example.env, *.pem), surface labels (Direct Tool Read, Shell Read, Script Mention, Shell HTTP Egress, Shell File Transfer / Socket, Script Network Egress, Native WebFetch), PII category labels (email, phone, ssn, credit_card), DLP gap counts, and authenticated deep links.
Emails never include: session titles, project names, file paths, destination URLs/hosts, shell commands, prompts, secrets, or free-text evidence fields.
Testing email delivery
1
Open alert settings
Click Configure Email Alerts & Cadence in the Signals header (admins land on Organization; other members land on My alerts).
2
Send a sample
Under Test Email Delivery, choose Test P0 Alert, Test Daily Digest, or Send test weekly digest.
3
Confirm the recipient
The sample is sent to the first configured recipient inbox, or your admin account if none is set. The recipient must be you, the security inbox, a configured org recipient, or an org member — arbitrary external addresses are rejected.
Who sees it
- Organization matrix, anomaly findings, status actions, and CSV export — administrators only. The backend enforces the same boundary.
- Configure Email Alerts & Cadence / My alerts — every org member. Non-admins see personal preferences; they do not see the org matrix or finding actions.
Empty matrices or report lists do not mean collection is broken. Signals require eligible completed-session evidence, and anomaly detectors may require sufficient historical coverage before they can fire.