Agent Architecture
How agent profiles, target scope, groups, license modules, custom fields, and KB exclusions shape what each Moftgate agent does - explained for administrators.
Overview#
Every Moftgate agent checks in with the server on a regular schedule called a heartbeat. On each heartbeat the server decides what the agent should do: which settings to apply, which DLP policies to enforce, which modules to run, and which custom fields or update exclusions to honor. This guide explains those decisions from an administrator’s perspective so you can configure agents confidently.
Configuration is delivered through three layers that run in order on every heartbeat: first the server picks the active profile for that endpoint, then it filters DLP policies by target scope, and finally it merges the chosen profile with the tenant defaults. License checks run alongside this flow so unlicensed features are never sent to the agent.
Agent Profiles#
An agent profile is a reusable bundle of settings - DLP toggles, USB rules, web content gateway options, file integrity monitoring paths, and more. Instead of configuring each endpoint individually, you create a handful of profiles that match your device roles (for example "Finance laptops", "Kiosk terminals", "Developer workstations") and assign one profile to each endpoint.
When an agent registers for the first time, it is automatically assigned the default profile. If you have marked a profile as the default, that one is used; otherwise the oldest profile is used as a fallback. You can reassign the profile at any time from the endpoint detail page.
- 1Open the endpoint detail page
Navigate to Fleet Intelligence, open the endpoint you want to configure, and locate the Agent Profile selector.
- 2Choose a profile
Select the agent profile that matches the device role (e.g. "Finance laptops", "Kiosk terminals"). The change takes effect on the next heartbeat.
- 3Verify in the agent cache
On the endpoint, run "agent --profile" to confirm the cached settings, DLP policies, and active modules match what you configured.
Target Scope Priority#
Target scope decides which endpoints a profile or policy applies to. When the server selects the active profile for an endpoint, it walks a priority ladder from most specific to least specific. The first scope that matches wins, and lower-priority scopes are ignored for that decision.
The priority order, from highest to lowest, is: endpoints, then users, then groups, then profiles, then all. In plain terms: a rule aimed at a single device beats one aimed at a person; a person beats a group; a group beats a profile; and a profile beats a blanket "everyone" rule.
| Priority & Scope | Specificity | How it matches |
|---|---|---|
| 0 - Endpoints | Most specific | Matches a single endpoint by hostname or ID. Use this for one-off overrides. |
| 1 - Users | Very specific | Matches the currently logged-in user by username. Use for per-person policies regardless of device. |
| 2 - Groups | Specific | Matches when the endpoint (or its logged-in user) belongs to at least one of the selected groups. |
| 3 - Profiles | Broad | Matches every endpoint assigned a particular agent profile. Use for role-based rollouts. |
| 4 - All | Catch-all | Applies to every endpoint in the tenant. Use as a baseline default. |
Endpoint and User Groups#
Groups let you target policies and profiles at collections of devices or people. Moftgate keeps two independent kinds of group membership: endpoint groups (which devices belong together, e.g. "IT servers", "Accounting workstations") and user groups (which people belong together, e.g. "Contractors", "Executives").
When a policy uses the "groups" scope, the server checks both kinds of membership: if either the endpoint or its currently logged-in user belongs to at least one of the selected groups, the policy applies. This OR logic means you can target a policy at "anyone in the Finance group or any device in the Finance group" with a single rule.
- Endpoint groups are great for device-role policies (e.g. enforce strict USB blocking on kiosk terminals).
- User groups are great for person-based policies (e.g. allow clipboard transfer for executives regardless of which laptop they use).
- A single endpoint can belong to many groups, and a single user can belong to many groups.
DLP Policy Filtering#
DLP policies are filtered by target scope on every heartbeat, so each agent receives only the policies relevant to it. The same five scopes are used, with one important detail for the "groups" scope: it matches if the endpoint belongs to a selected group OR the logged-in user belongs to a selected group.
| Target Scope | Match Rule |
|---|---|
| All | Applies to every endpoint in the tenant. |
| Endpoints | Matches when the endpoint hostname or ID is listed. |
| Users | Matches when the logged-in user is listed. |
| Groups | Matches when the endpoint OR the logged-in user belongs to at least one selected group. |
| Profiles | Matches when the endpoint is assigned the listed agent profile. |
License Modules and Agent Behavior#
What an agent actually does is gated by two things: whether your license includes the module, and whether the module is enabled in the endpoint’s active profile. Both must be true for the feature to run. This two-layer check prevents unlicensed features from being sent to the agent and lets you turn off a module per profile even when it is licensed.
| License Module | What it enables | When disabled or unlicensed |
|---|---|---|
| DLP | Data loss prevention policies, USB blocking, web content gateway, app/web policies | No DLP policies or USB blocking are sent; the web content gateway is disabled. |
| Endpoint Visibility | File integrity monitoring, behavior logs, endpoint inventory | File integrity monitoring and behavior logging stop; reporting is rejected. |
| SSPM | SaaS security posture management | SaaS posture features are disabled. |
| DSPM | Data discovery and file scanning | No discovery tasks are sent; scan result reporting is rejected. |
On every heartbeat the server sends the agent a short list of active modules. The agent only starts the background tasks for modules in that list - it will not track clipboard or USB for DLP if DLP is inactive, will not watch files for integrity monitoring if visibility is inactive, and so on. This keeps idle agents lightweight.
- Heartbeat always works, even with no license, so the agent stays visible in the panel.
- If no license file exists, all modules are closed and the agent does nothing beyond heartbeat.
- A module disabled in the profile is not sent to the agent, saving CPU, memory, and network.
- When the license changes, the active module list updates on the next heartbeat.
Custom Fields and KB Exclusions#
Custom fields and KB (knowledge base) exclusions are delivered to agents with the same target-matching logic as policies. Each custom field or exclusion can be scoped to all endpoints, a group, a profile, a tag, or a single endpoint, so agents only receive what applies to them.
Custom fields let you collect extra metadata from each endpoint (for example "Cost Center", "Department", "Asset Tag"). The agent gathers known values like hostname, OS, and username automatically and uses the default value for anything else, then reports the values back to the server on every heartbeat.
| Target Type | Delivery Rule |
|---|---|
| All endpoints | Delivered to every endpoint in the tenant. |
| Group | Delivered when the endpoint belongs to at least one of the selected groups. |
| Profile | Delivered when the endpoint is assigned the selected agent profile. |
| Tag | Delivered when the endpoint carries at least one of the selected tags. |
| Endpoint | Delivered only to the specific endpoint listed. |
KB exclusions tell the agent which OS updates to skip. When the agent is about to install an update, it checks the exclusion list first; any excluded update is skipped and logged. Exclusions can also be filtered by operating system type, so a Windows-only exclusion never affects a macOS agent.
Agent CLI Commands#
For advanced users and support engineers, the agent ships with a small set of command-line flags. These are useful for diagnosing what an endpoint is actually doing and for testing DLP rules against a file before rolling out a policy.
| Command | Description |
|---|---|
| agent | Starts the agent daemon in normal mode. |
| agent --version | Prints the installed agent version. |
| agent --config | Shows the local configuration (device ID, hostname, server URL). |
| agent --profile | Shows the cached policy bundle (settings, DLP policies, active modules). Refreshes from the server if the cache is empty. |
| agent --license | Fetches the live license status from the server (modules, quantities, expiry). |
| agent --evaluate <file> <channel> | Tests a file against DLP rules for a given channel (usb, web, email, print, clipboard, sync). |
| agent --restarted | Notifies the server that the agent was just restarted. |