FAQ & Troubleshooting
Answers to common questions and solutions for typical issues with TATER.
General Questions
What is TATER?
TATER (Threat Analysis Targeting Enterprise Resources) is a multi-tenant compliance management platform for Microsoft 365 and endpoint environments. It automates security auditing against CIS Benchmarks, CISA SCuBA, DISA STIGs, and custom frameworks.
Which compliance frameworks does TATER support?
TATER supports CIS Benchmarks (M365, Windows 11, Server 2019/2022/2025, Edge, Intune), CISA SCuBA, DISA STIGs, and maps to NIST 800-53, ISO 27001, SOC 2, PCI DSS, HIPAA, and GDPR. See Frameworks & Standards for details.
How many controls does TATER evaluate?
Over 4,800+ controls across 30+ frameworks, plus dynamic vulnerability controls from MDE endpoint scanning.
Does TATER support multi-tenant environments?
Yes. TATER is designed for multi-tenant use. MSPs and organizations with multiple M365 tenants can manage each tenant independently with separate scan results, overrides, and reports.
Authentication
I cannot sign in. What should I check?
- Verify your Entra ID app registration has the correct redirect URIs
- Ensure the app registration includes
app.tatersecurity.comin redirect URIs - Clear browser cache and cookies, then try again
- Check that your account has been added to an organization in TATER
- Verify popup blockers are not blocking the MSAL authentication popup
I get 401 Unauthorized from the API
- Your JWT token may have expired. Sign out and sign back in.
- The API accepts both raw GUID and
api://prefixed audience formats - For runbook authentication, ensure the API key is correctly configured
Scanning Issues
My scan shows no controls
- Verify the scan script completed without errors
- Check the output JSON file exists and contains control data
- Ensure you are importing the correct file format
Scans time out on large tenants
Large M365 tenants may require 30+ minutes. Increase the timeout parameter in the scan script. For Azure Automation, the default timeout is 3 hours.
Why do Teams controls show SKIP?
Teams Cs* cmdlets require delegated authentication, which cannot be automated in Azure Automation runbooks. Approximately 36 Teams controls permanently return SKIP status. This is a known platform limitation.
Endpoint scan runs out of memory
The MDE bulk vulnerabilities endpoint can cause out-of-memory in Azure Automation's ~400MB sandbox. The Scan-Endpoints runbook uses per-machine vulnerability queries with deduplication to avoid this.
Dashboard Issues
Dashboard shows no data
- Ensure at least one scan has been imported
- Check that you are viewing the correct organization
- Verify your user account has appropriate permissions (at least Viewer role)
Trend chart looks flat
The trend chart needs multiple scans over time to show meaningful trends. Run scans regularly (daily or weekly) to build up historical data points.
Compliance score seems wrong
- Check if overrides are affecting the score (overridden controls show as "Override" not "Fail")
- Verify the correct compliance zones are configured (unchecked zones exclude controls)
- Check the Framework Category filter (Compliance vs. Vulnerability views show different metrics)
Data looks stale - how do I refresh without reloading the browser?
Click the ↺ circular arrow button in the topbar (between the bug report icon and the dark/light mode toggle). It re-fetches and re-renders the current page's data in-place without losing your scroll position or navigation state. This is useful after a scan completes, after another user makes changes, or any time you want the latest data without a full page reload.
How do I share a link to a specific record?
Open the record (e.g., a specific risk, POAM, audit, vendor, wiki page, ConfigDoc, etc.) so its detail view is on screen. Click the 🔗 chain-link button in the topbar - the shareable URL is copied to your clipboard with a toast confirmation. Paste it anywhere; the receiver's browser will land on the same record after sign-in.
Keyboard shortcut: Shift+L from anywhere except text inputs. Works in TATER Security, TATER Ops, TATER Manage, and My TATER - each app's topbar has the same icon.
If you're on a list page (Risks, POAMs, Audits, etc.) without a record selected, the button copies a link to the list itself. If you're on a detail page but haven't selected a specific record, the button refuses to copy and toasts "No record selected on this page".
MCP-driven tools (Claude, Copilot) include these same links automatically in their responses after a create/update - so when an AI agent reports "I created a risk acceptance, here's the link," clicking it lands on the record.
How do I quickly jump between pages?
Press Ctrl+K (Cmd+K on Mac) from anywhere. In TATER Ops, TATER Manage, My TATER, and TATER Insights this opens a command palette: start typing the name of any page in the sidebar, use the arrow keys to highlight it, and press Enter to jump there - Esc closes it. In TATER Security the same shortcut opens the fuller search overlay (recent pages, quick actions, and cross-record search). It's the fastest way to move around without hunting through the sidebar.
Remediation
Remediation button does nothing
- Ensure remediation is enabled for your organization in Organization Settings
- Verify the remediation webhook URL is configured correctly
- Check that the remediation catalog has entries matching your failing controls
- Confirm the Azure Automation Account is running and accessible
Exchange remediation fails
Exchange Online remediation requires the PS 5.1 companion runbook. Verify that Run-Remediation-EXO is published in your Automation Account and that the ExchangeOnlineManagement module (v3.4.0+) is installed.
Agent Issues
Does the agent run on macOS and Linux?
Yes. The agent is a single cross-platform Go binary: Windows (MSI, Intune, or Group Policy), macOS (Apple Silicon and Intel, runs as a launchd daemon, deployable via Intune), and Linux (x64 and ARM64, runs under systemd via a scripted install). macOS and Linux each run their own bash-based security control sets alongside evidence collection and speed testing. See macOS Deployment and Linux Deployment for step-by-step instructions.
Agent cannot connect to API
- Verify the API base URL includes the
/apisuffix - Check network connectivity and firewall rules for HTTPS (port 443)
- Verify the Organization ID is valid
- Test connectivity by opening
https://api.tatersecurity.com/api/agent/versionin a browser
Agent auto-update fails
Check that the download URL is accessible. CRLF line ending issues during SWA deployment can cause SHA-256 hash mismatches. Re-deploy the MSI to fix hash verification.
Device shows Offline forever even though the agent service is running
Before v2.4.11, the agent only wrote diagnostics to /api/agent/diagnostics when an operator explicitly ran tater-agent.exe -diagnostics or hit the local-dashboard diagnostics button. The Devices page in Ops + Manage reads agentVersion, lastLoggedInUser, runAt, and Online status from that record - so every fielded device showed Offline forever (no version, no last-user, no compliance) once the install-time diagnostic aged past 90 minutes, even though the agent was actively scanning and uploading.
Fix: upgrade to agent v2.4.11+. v2.4.11 adds a background heartbeat goroutine that runs diagnostics + POSTs to /api/agent/diagnostics every 30 minutes (60 s after startup so the initial scan can flow first). The Devices page's 90-minute Online window receives 3 heartbeats per cycle, so devices stay accurate. Wired into both service mode and interactive/tray mode - idempotent, no operator action needed. Verify on a sample device: check the Devices page 60–90 minutes after the v2.4.11 upgrade and the agentVersion / lastLoggedInUser / Online status should populate without intervention.
Devices page shows only 50 devices (or fewer than expected)
Fixed in 2026-05-29. GET /api/agent/diagnostics previously hardcoded OFFSET 0 LIMIT 50 before deduping to one row per device. With the v2.4.11 heartbeat goroutine POSTing every 30 minutes, 50 reports covered only the most active ~10–15 devices' latest few heartbeats - so any fleet bigger than ~20 devices silently dropped endpoints from the Devices / Fleet list in both TATER Manage and TATER Security.
Fix: the default report window is now 1000 (configurable via ?limit=N, 1–5000), and the projection is tightened to fleet-card fields only so the larger window still fits in the Functions response budget. A 100-device fleet now has ~5 hours of heartbeat history captured per device in the dedup window - comfortably enough to surface every endpoint.
Sentinel for very large fleets: the response includes a new _meta block with reportsScanned, limit, and truncated. If you see "truncated": true when curling the endpoint, the fleet outgrew the dedup window - bump the limit explicitly:
curl -sH "Authorization: Bearer $JWT" -H "X-Organization-Id: $ORG_ID" \
'https://api.tatersecurity.com/api/agent/diagnostics?limit=5000' | jq '._meta'No client change required - both the Manage Devices page and TATER Security Fleet page consume the same devices[] array and will surface the full fleet on the next API deploy.
What are Endpoint Profiles, and how do they differ from Endpoint Policies?
An Endpoint Policy enforces a single setting category on a device (USB control, app-allow, JIT-admin elevation, power, browser, DNS). An Endpoint Profile is a ScriptLogic / Desktop Authority-style bundle: an ordered set of configuration elements (drive map, printer, shortcut, registry value, scheduled task, message, or raw script) gated by a composable targeting rule and fired on a trigger (logon / startup / unlock / interval / on-demand). The agent re-evaluates the targeting rule locally on every trigger, so a profile decides per-device and per-logged-in-user whether to run - reacting to who's signed in and their group membership, not just which machine it landed on. You author profiles in TATER Manage → Endpoint Health → Endpoint Profiles and run/troubleshoot them from TATER Ops. See Endpoint Management → Endpoint Profiles.
Tray icon disappears after a binary swap or update
Before v2.4.10, swapping the agent binary (or any in-place update) required the logged-in user to sign out and back in before the tray reappeared. v2.4.10+ includes a service-mode goroutine that spawns the user-session tray via the WTSGetActiveConsoleSessionId / WTSQueryUserToken / CreateProcessAsUserW pattern (same Win32 APIs PsExec uses). It runs at service startup and every 15 minutes, idempotent - skips spawning if a tray is already running. All future binary swaps recover within ~15 minutes without requiring user logout.
What does Verify-TATERAgent.ps1 check, and how do I run it?
Verify-TATERAgent.ps1 is the field-tested health check + self-healing script for any TATER-deployed Windows machine. It runs 8 checks (filesystem, binary version, configuration, service status, process instances, network reachability, recent activity, summary). With -Fix, it auto-heals common drift: dead apiBase URL (rewrites config.json + restarts service), stale binary version (force-replaces via SHA-verified binary swap), stopped service (starts it), and multiple tray instances in one session (kills duplicates).
Standard run (any user, no elevation):
iwr https://www.tatersecurity.com/Agent/Verify-TATERAgent.ps1 -UseBasicParsing -OutFile $env:TEMP\Verify.ps1
powershell.exe -ExecutionPolicy Bypass -File $env:TEMP\Verify.ps1With auto-fix (elevated PowerShell required):
powershell.exe -ExecutionPolicy Bypass -File $env:TEMP\Verify.ps1 -FixExit codes: 0 = healthy, 1 = problems found (read the report), 2 = TATER agent not installed.
Agent is stuck on a pre-v2.4.6 version and won't auto-update
Per ADO #569, every agent build prior to v2.4.6 has the auto-update endpoint URL hardcoded to func-tater-api-prod.azurewebsites.net - the API host that was decommissioned during the tenant migration. These agents cannot self-heal because their first DNS lookup for the version-check call returns no-such-host. Force-upgrade them via Verify-TATERAgent.ps1 -Fix (it detects the version, downloads the current binary, SHA-verifies, and replaces in place):
Remove-Item $env:TEMP\Verify.ps1 -Force -ErrorAction SilentlyContinue
iwr https://www.tatersecurity.com/Agent/Verify-TATERAgent.ps1 -UseBasicParsing -OutFile $env:TEMP\Verify.ps1
powershell.exe -ExecutionPolicy Bypass -File $env:TEMP\Verify.ps1 -FixAfter force-upgrade, the agent has the auto-update foreign-platform-tolerance fix from v2.4.9+ and will self-heal for all future version bumps.
Agent shows healthy locally but uploads nothing to TATER
Most common cause: the agent's config.json apiBase still points at the decommissioned func-tater-api-prod.azurewebsites.net URL from before the tenant migration. The agent's scan loop runs locally, writes log files, but every API call fails silently (DNS no-such-host). Two telltale signs:
last-upload.jsonsentinel is missing OR very old (the agent only writes it on successful upload)C:\ProgramData\TATER\Logs\TATER-Agent_*.logshowsGet "https://func-tater-api-prod.azurewebsites.net/...": dial tcp: lookup ... no such host
Fix: run Verify-TATERAgent.ps1 -Fix from an elevated PowerShell - the script detects the dead URL, rewrites config.json apiBase to https://api.tatersecurity.com/api, restarts the service, and (if also stale) force-upgrades the binary. Both fixes happen in one run. Per ADO #569.
.intunewin download is tiny (~6 KB) and Intune rejects it
You downloaded the SWA's 404 HTML page with a .intunewin extension. The SWA's incremental sync occasionally leaves /Agent/* URLs 404 for 5-15 minutes after a TATER release deploy. Three remedies, in order of preference:
- Verify the SHA before uploading:
(Get-FileHash TATER-Agent.intunewin -Algorithm SHA256).Hash. The .intunewin should be ~5.5 MB; the 404 HTML is ~6 KB. - Wait 5-15 min and re-download - the SWA edge typically catches up.
- Pull from the source of truth in your local TATER repo clone:
C:\path\to\TATER\Agent\TATER-Agent.intunewin(orC:\path\to\TATER\Installer\bin\IntuneWin\TATER-Agent.intunewin- both identical).
Intune install fails with exit code 1603 after a successful auto-update
Per ADO #568, the agent's in-place auto-update replaces tater-agent.exe without going through Windows Installer. After that, any msiexec /i repair triggers SECUREREPAIR validation which fails because the on-disk binary doesn't match what MSI's cached source expects. Two workarounds:
- Avoid MSI repair entirely for version upgrades - use
Verify-TATERAgent.ps1 -Fixinstead. The script's binary-swap path matches the agent's own auto-update mechanism so MSI's database doesn't matter. - For Intune Detection rule: use File exists at
C:\ProgramData\TATER\tater-agent.exe(NOT MSI product code, and NOTC:\Program Files\TATER). The MSI roots[TATERDIR]at%ProgramData%\TATERviaCommonAppDataFolder; any Win32 app reporting "failed to detect" almost certainly has the rule pointed atProgram Filesfrom older guidance. The file-existence rule survives auto-updates; the product-code rule breaks after the first one.
Deployment Issues
Intune Win32 app reports "failed to detect" after every install
Almost always the detection rule is pointed at the wrong path. The TATER MSI installs tater-agent.exe to C:\ProgramData\TATER\ (rooted via CommonAppDataFolder\TATER in Installer/Directories.wxs line 8). It does NOT install to C:\Program Files\TATER. If your Intune detection rule says C:\Program Files\TATER\tater-agent.exe, Intune will see "file missing" after every successful install and report the deployment as failed forever, even while the agent runs normally on the endpoint.
Fix: change the detection rule to:
- Type: File
- Path:
C:\ProgramData\TATER - File:
tater-agent.exe - Method: File or folder exists
Update the rule in the existing app assignment - you don't need to rebuild the .intunewin package or rotate the API key. Endpoints will flip from Failed to Succeeded on their next Intune compliance check (usually within 60 minutes, faster after a manual sync from Settings > Accounts > Access work or school).
SWA deployment hangs
The swa deploy CLI can hang when run from Git Bash on Windows. Use PowerShell for SWA deployments instead.
API deployment returns errors
- Run
cd api && npx tsc --noEmitto check for TypeScript compilation errors - Verify all environment variables are set on the Function App
- Check that the database is accessible from the API
Performance
Dashboard loads slowly
- Large datasets (thousands of controls across many scans) can slow initial load
- Use framework and status filters to reduce the displayed data set
- Ensure you have a stable internet connection to the API
- Modern browsers with at least 2GB RAM recommended
AI & MCP
How do I connect Claude or Microsoft 365 Copilot to TATER?
TATER ships a full MCP (Model Context Protocol) server, so AI assistants can read your compliance posture and act on it - always audit-logged. For claude.ai and Claude Desktop, add TATER as a remote connector and sign in as yourself (no API key in the URL). Only local stdio mode and headless runners need an API key, generated in Manage → Connections → API Keys. Full walkthroughs: Claude MCP Setup and Microsoft 365 Copilot Setup.
What can an AI agent actually do through MCP?
Whatever the signed-in user (or the API key's role) is allowed to do - MCP enforces the same role checks as the app, and admins can further restrict individual tools per organization with MCP tool policies. Every tool call is recorded in the Activity Log.
Is there a built-in AI assistant?
Yes. The AI Compliance Analyst is built into TATER Security: ask questions about your scan data, create risk acceptances, assign controls, document evidence, and trigger remediations from a chat interface.
Billing, Licensing & MSP Setup
How is TATER licensed and billed?
TATER is a sales-assisted, per-seat SaaS platform - subscriptions are provisioned and managed by TATER Security staff rather than self-service checkout. Plans and inclusions are on the public pricing page; provisioning and seat management are covered in Subscription Management.
How does billing work for MSPs?
MSP partners manage seat licensing for their client organizations from the Licensing page - seat limits, usage tracking, and per-client rollup - with TATER Security provisioning the MSP subscription on your behalf. See the MSP Billing Guide.
I'm an MSP - how do I onboard a client tenant?
Create the client organization, connect its Microsoft tenant credentials for scanning, and deploy agents to its endpoints. Step-by-step: MSP Tenant Setup, with the broader operating model in the MSP Guide.
Newer Features
Can TATER record and transcribe meetings?
Yes. The Meeting Recorder in the TATER agent captures system audio plus your microphone for meetings you don't host, transcribes them entirely on your own machine with a local Whisper model (no audio ever leaves the device), and saves the reviewed transcript as a Meeting Record your AI can mine for action items.
Does TATER include a password manager? Can I send someone a secret securely?
TATER Vault is a zero-knowledge password and secrets manager with master-passphrase encryption, TOTP codes, and group sharing. To share a secret with someone outside the vault, One-Time Send generates an end-to-end-encrypted link that can be opened once and then self-destructs - the recipient needs no account.
What's the difference between My Tasks and My To-Dos?
My Tasks are real Ops tickets and compliance assignments - categories, SLAs, approvals, routing. My To-Dos are lightweight personal or team items with none of that overhead, with optional recurrence and group sign-off tracking. If it needs a paper trail with a requester and a queue, it's a task; if it's "remember to do this by Friday", it's a to-do. See My To-Dos.
How do employees request access to SharePoint sites, DLs, or shared mailboxes?
Through Access Requests in My TATER: the user picks a request type (built-in or admin-defined), it routes to the right approver, and approval spawns tracked fulfillment - an automation script or step-by-step guidance. Nothing is granted automatically, and every decision is audited.
Where do I see DLP and DMARC health?
TATER Security → Reports → DLP & DMARC shows Microsoft Purview DLP match volume and DMARC alignment, plus per-signal ingestion health - so a quiet pipeline is distinguishable from a broken one.
What is the TATER Tuning dial?
TATER Tuning is a managed endpoint-hardening dial: set a security level per device group, per app, and agents enforce it on every device in the group within about 30 minutes - no hand-authored hardening scripts. Tenant-level M365 columns are applied by an Azure Automation runbook; see TATER Tuning - M365 Tenant Setup.
Getting Help
If your issue is not covered here:
- Review the relevant guide page in this documentation
- Check Azure Automation job output for runbook errors
- Review browser developer console (F12) for frontend errors
- Contact support at support@tatersecurity.com
TATER