Skip to content
MoftgateMoftgate Docs
Product guide

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.

Changes apply on the next heartbeat
You do not need to restart agents after changing a profile, policy, or group assignment. The agent picks up the new configuration on its next heartbeat, and the server can push an immediate update so most changes take effect within seconds.

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.

  1. 1
    Open the endpoint detail page

    Navigate to Fleet Intelligence, open the endpoint you want to configure, and locate the Agent Profile selector.

  2. 2
    Choose 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.

  3. 3
    Verify in the agent cache

    On the endpoint, run "agent --profile" to confirm the cached settings, DLP policies, and active modules match what you configured.

Sensor Deployment Gateway with pre-configured agent binaries for Windows, macOS, and Linux.
Sensor deployment gateway screen
Close image
Profile vs. policy
A profile holds settings (what the agent does), while DLP policies hold rules (what content to block or warn about). They are configured separately and both are delivered on every heartbeat. Assigning a profile does not, by itself, apply DLP policies - those are filtered by target scope.

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 & ScopeSpecificityHow it matches
0 - EndpointsMost specificMatches a single endpoint by hostname or ID. Use this for one-off overrides.
1 - UsersVery specificMatches the currently logged-in user by username. Use for per-person policies regardless of device.
2 - GroupsSpecificMatches when the endpoint (or its logged-in user) belongs to at least one of the selected groups.
3 - ProfilesBroadMatches every endpoint assigned a particular agent profile. Use for role-based rollouts.
4 - AllCatch-allApplies to every endpoint in the tenant. Use as a baseline default.
Most specific always wins
If a profile is selected by an endpoint-level match, any group- or profile-level rules for the same setting are ignored. Use the "all" scope only as a baseline; layer more specific scopes on top to override it where needed.

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").

Endpoint and user groups are independent
Adding an endpoint to a group does not add its logged-in user to that group, and adding a user to a group does not add their endpoint. Manage endpoint membership from the endpoint detail page and user membership from the Endpoint User Intelligence page.

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 ScopeMatch Rule
AllApplies to every endpoint in the tenant.
EndpointsMatches when the endpoint hostname or ID is listed.
UsersMatches when the logged-in user is listed.
GroupsMatches when the endpoint OR the logged-in user belongs to at least one selected group.
ProfilesMatches when the endpoint is assigned the listed agent profile.
Why filtering matters
Filtering keeps each agent’s policy bundle small and relevant. An endpoint that matches no specific policies still receives the "all" policies as a baseline, so you never have a device with zero protection.

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 ModuleWhat it enablesWhen disabled or unlicensed
DLPData loss prevention policies, USB blocking, web content gateway, app/web policiesNo DLP policies or USB blocking are sent; the web content gateway is disabled.
Endpoint VisibilityFile integrity monitoring, behavior logs, endpoint inventoryFile integrity monitoring and behavior logging stop; reporting is rejected.
SSPMSaaS security posture managementSaaS posture features are disabled.
DSPMData discovery and file scanningNo discovery tasks are sent; scan result reporting is rejected.
Automatic sub-modules
Some modules automatically enable others. When DLP is active, the Web Content Gateway is active too. When Endpoint Visibility is active, File Integrity Monitoring is active too. You do not need to enable these separately.

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 TypeDelivery Rule
All endpointsDelivered to every endpoint in the tenant.
GroupDelivered when the endpoint belongs to at least one of the selected groups.
ProfileDelivered when the endpoint is assigned the selected agent profile.
TagDelivered when the endpoint carries at least one of the selected tags.
EndpointDelivered 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.

Why scoping matters
Scoping keeps the agent bundle small and avoids unwanted behavior. A KB exclusion scoped to a single kiosk endpoint will not stop updates on your finance laptops, and a custom field scoped to the Finance group will not clutter other departments’ agents.

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.

CommandDescription
agentStarts the agent daemon in normal mode.
agent --versionPrints the installed agent version.
agent --configShows the local configuration (device ID, hostname, server URL).
agent --profileShows the cached policy bundle (settings, DLP policies, active modules). Refreshes from the server if the cache is empty.
agent --licenseFetches 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 --restartedNotifies the server that the agent was just restarted.
Diagnosing a misbehaving endpoint
Run "agent --profile" to see exactly which settings, DLP policies, and active modules the agent has cached. If something looks wrong, confirm with "agent --license" that the license is valid and includes the expected modules, then wait for the next heartbeat or trigger a profile update from the panel.

FAQ#

If an endpoint is assigned to a group, does its logged-in user automatically join that group?
No. Endpoint group membership and user group membership are managed independently. Adding an endpoint to a group does not add its user, and vice versa. Assign users to groups from the Endpoint User Intelligence page and endpoints from the endpoint detail page.
How quickly do profile or policy changes take effect?
Changes take effect on the next heartbeat. The server can also push an immediate update via the profile update command, so most changes apply within seconds.
What happens if a module is licensed but disabled in the profile?
The agent treats the module as inactive. It will not collect data, send reports, or run the module’s background tasks for that endpoint. This saves CPU, memory, and network bandwidth.
What if there is no license file at all?
All modules are closed. The agent keeps sending heartbeats (so it stays visible in the panel) but performs no DLP, visibility, SSPM, or DSPM work until a valid license is present.
Does the "all" scope override more specific scopes?
No. More specific scopes always win. A policy scoped to a single endpoint takes precedence over one scoped to "all", which acts only as a baseline default.
Are custom fields and KB exclusions sent to every endpoint?
Only when their target matches. You can scope each custom field or KB exclusion to all endpoints, a group, a profile, a tag, or a single endpoint, so agents only receive what is relevant to them.