> ## Documentation Index
> Fetch the complete documentation index at: https://syteca.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Heartbeat Checking

> Periodically verify that a secret's stored password is still valid on the target system, without changing it — catch drift before it blocks access or rotation.

**Heartbeat checking** periodically verifies whether the password stored in a secret is still valid on the target system, without changing it. On the configured schedule, Syteca connects to the target and checks whether the current credentials authenticate successfully. The result is recorded and shown as a **Heartbeat status** on the **Password Management** page.

<Info>
  **Use this when you need to:**

  * Catch a secret whose password was changed outside Syteca — by a sysadmin, a scheduled task, or a security incident — before someone tries to use it or before rotation runs into it.
  * Get an early warning on invalid credentials, instead of finding out only when [remote password rotation](/docs/pam/secrets/remote-password-rotation) or a connection attempt fails.
  * Monitor a large secret inventory for drift at a glance, using the Heartbeat status column and filters.
</Info>

Heartbeat checking is supported for:

* Active Directory account
* Windows account
* Unix account (SSH)
* MS SQL account

<Note>
  Not supported for Unix account (Telnet) or Web account secret types.
</Note>

<Note>
  Heartbeat checking can also be configured and queried through the [Syteca ACB API](/docs/api/acb/endpoints/heartbeat) — including scheduling checks via [Add secret](/docs/api/acb/endpoints/add-secret) / [Update secret](/docs/api/acb/endpoints/update-secret), reading results via [Get secret](/docs/api/acb/endpoints/get-secret), and triggering an on-demand check via the [Heartbeat endpoint](/docs/api/acb/endpoints/heartbeat). This page covers the Management Tool UI; see those pages for API and CLI details.
</Note>

## Enable Heartbeat checking when adding a secret

Heartbeat checking is configured on the **Automation** tab of the **Add Secret** panel, below the Remote Password Rotation section.

<Steps>
  <Step title="Open Add Secret">
    On the **Password Management** page, click **Add**.
  </Step>

  <Step title="Open the Automation tab">
    In the **Add Secret** panel, select the **Automation** tab.
  </Step>

  <Step title="Enable Scheduled Heartbeat">
    Select **Scheduled Heartbeat**.
  </Step>

  <Step title="Set the check interval">
    In the **Heartbeat every** field, enter the interval value and select a time unit:

    | Time unit        | Accepted range                                                    |
    | ---------------- | ----------------------------------------------------------------- |
    | Minutes          | 15–90 (the +/- step buttons cycle through 15, 30, 45, 60, 75, 90) |
    | Hours            | 1–99                                                              |
    | Days *(default)* | 1–99                                                              |

    The field is pre-filled with `30`.
  </Step>

  <Step title="Finish the secret and save">
    Complete the remaining tabs as required, then click **Save**.
  </Step>
</Steps>

<Frame caption="The Scheduled Heartbeat section on the Automation tab.">
  <img src="https://mintcdn.com/syteca/FKrkO8bEqEQ6WSgs/images/pam/secrets/heartbeat-automation-tab.png?fit=max&auto=format&n=FKrkO8bEqEQ6WSgs&q=85&s=fb519f101d6fe0b04f7c89c600ffbbca" alt="Add Secret Automation tab showing the Scheduled Heartbeat toggle and interval field" width="797" height="681" data-path="images/pam/secrets/heartbeat-automation-tab.png" />
</Frame>

<Frame caption="The Heartbeat every interval field.">
  <img src="https://mintcdn.com/syteca/FKrkO8bEqEQ6WSgs/images/pam/secrets/heartbeat-interval-field.png?fit=max&auto=format&n=FKrkO8bEqEQ6WSgs&q=85&s=7c5f9d8d341808f62823a7aab22d525d" alt="Heartbeat every field with numeric input and time unit drop-down" width="785" height="231" data-path="images/pam/secrets/heartbeat-interval-field.png" />
</Frame>

## Configure Heartbeat checking for an existing secret

<Steps>
  <Step title="Open the secret">
    On the **Password Management** page, open the secret to configure.
  </Step>

  <Step title="Open the Automation tab">
    In the **Edit Secret** panel, select the **Automation** tab.
  </Step>

  <Step title="Enable or disable Scheduled Heartbeat">
    Toggle **Scheduled Heartbeat** on or off. When enabled, configure the **Heartbeat every** interval as above.

    <Note>
      The **Heartbeat every** field is disabled while **Scheduled Heartbeat** is off.
    </Note>
  </Step>

  <Step title="Save">
    Click **Save**.
  </Step>
</Steps>

Once configured, the Automation tab also shows:

| Element            | Description                                                                                                                                                                   |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Last heartbeat** | Date and time of the most recent check (automatic or manual). Shows **Never** if no check has run yet.                                                                        |
| **Run heartbeat**  | Triggers an immediate check, regardless of the schedule. Requires the same permissions as Password Rotation. Only available in the **Edit Secret** panel, not **Add Secret**. |

### Manual Heartbeat check (Run heartbeat)

Clicking **Run heartbeat** checks the secret's password validity immediately. **Last heartbeat** updates, and one of these appears:

| Notification                         | Meaning                                                                                                                          |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| **The password is valid.**           | Authentication succeeded with the current credentials.                                                                           |
| **The password is invalid.**         | The system connected, but the credentials were rejected. **Scheduled Heartbeat** is automatically disabled — see the note below. |
| **Password status checking failed.** | The check couldn't complete (for example, the target host was unavailable).                                                      |

<Warning>
  If a Heartbeat check returns **Invalid**, **Scheduled Heartbeat** is automatically disabled. Automatic checks don't resume until the toggle is manually re-enabled.
</Warning>

## View Heartbeat status on the Password Management page

Two optional columns — **Heartbeat status** and **Last heartbeat check** — can be added to the Secrets grid, both hidden by default.

<Steps>
  <Step title="Open Edit Columns">
    On the **Password Management** page, click **Edit Columns**.
  </Step>

  <Step title="Select the columns">
    Check **Heartbeat status** and/or **Last heartbeat check**.
  </Step>

  <Step title="Close the list">
    The selected columns now appear in the Secrets grid.
  </Step>
</Steps>

<Frame caption="Heartbeat status and Last heartbeat check columns enabled in the Secrets grid.">
  <img src="https://mintcdn.com/syteca/FKrkO8bEqEQ6WSgs/images/pam/secrets/heartbeat-columns.png?fit=max&auto=format&n=FKrkO8bEqEQ6WSgs&q=85&s=49b50a9b441a4bdc0fbdd11a70bec6b6" alt="Secrets grid showing the Heartbeat status and Last heartbeat check columns" width="368" height="457" data-path="images/pam/secrets/heartbeat-columns.png" />
</Frame>

<Note>
  These columns aren't shown for sub-secrets (computers for which connections are allowed, as specified in an Active Directory secret) — same behavior as the Password Rotation columns. The date and time in **Last heartbeat check** always matches **Last heartbeat** on the Automation tab for the same secret.
</Note>

### Heartbeat status values

| Status      | When shown                                                                                       | Tooltip                       |
| ----------- | ------------------------------------------------------------------------------------------------ | ----------------------------- |
| **None**    | No check has ever run for this secret.                                                           | —                             |
| **Valid**   | The most recent check confirmed the password is valid.                                           | Password is valid             |
| **Invalid** | The most recent check found the password invalid. Scheduled Heartbeat is automatically disabled. | Password is not valid         |
| **Failed**  | The most recent check couldn't complete (target unreachable, connection error, etc.).            | The heartbeat check is failed |

### Filter by Heartbeat status

Two filters are available on the Password Management page:

| Filter                   | Behavior                                                                                                                            |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Heartbeat status**     | Filter by **Valid**, **Invalid**, **Failed**, or **None** — same behavior as the existing Password Rotation Status filter.          |
| **Last heartbeat check** | Filter by **Within the last \<period>** or **Between \<date> – \<date>** — same behavior as the existing Last Rotation Time filter. |

<Frame caption="The Heartbeat status and Last heartbeat check filters.">
  <img src="https://mintcdn.com/syteca/FKrkO8bEqEQ6WSgs/images/pam/secrets/heartbeat-filters.png?fit=max&auto=format&n=FKrkO8bEqEQ6WSgs&q=85&s=e9a8d8a442547951e5e5e73f87803246" alt="Password Management page filters including Heartbeat status and Last heartbeat check" width="457" height="265" data-path="images/pam/secrets/heartbeat-filters.png" />
</Frame>

## Audit Log events

Every Heartbeat configuration change and manual check is recorded in the [Audit Log](/docs/administration/audit-log):

| Event                                                | Category       | Action             | Details                                |
| ---------------------------------------------------- | -------------- | ------------------ | -------------------------------------- |
| New secret created with Scheduled Heartbeat enabled  | Secret manager | Adding secret      | Heartbeat period: `<specified period>` |
| New secret created with Scheduled Heartbeat disabled | Secret manager | Adding secret      | Heartbeat period: None                 |
| Scheduled Heartbeat enabled for an existing secret   | Secret manager | Editing secret     | Heartbeat period: `<specified period>` |
| Scheduled Heartbeat disabled for an existing secret  | Secret manager | Editing secret     | Heartbeat period: None                 |
| Run heartbeat clicked in Edit Secret                 | Secret manager | Heartbeat checking | Manual heartbeat run                   |

<Tip>
  Filter the Audit Log's **Action** filter for Heartbeat checking events specifically.
</Tip>

## System Health: System State and Tasks List

Heartbeat check results and errors also appear on the [System Health page](/docs/administration/dashboards/system-health-dashboards), in both **System State** and the **Tasks List**.

### System State

| Event                                  | Category       | Severity | Details                                                 |
| -------------------------------------- | -------------- | -------- | ------------------------------------------------------- |
| Automatic check succeeded              | Scheduled task | None     | Periodic heartbeat check for secret '`<secret name>`'   |
| Automatic check failed                 | Server error   | Medium   | Heartbeat for `<secret name>` failed. Error: `<reason>` |
| Manual check (Run heartbeat) succeeded | Scheduled task | None     | Periodic heartbeat check for secret '`<secret name>`'   |
| Manual check (Run heartbeat) failed    | Server error   | Medium   | Heartbeat for `<secret name>` failed. Error: `<reason>` |

### Tasks List

| Event                              | Details                                                   | Status   |
| ---------------------------------- | --------------------------------------------------------- | -------- |
| Automatic check → password valid   | The password is valid in: `<secret name>`                 | Finished |
| Automatic check → password invalid | The password is invalid in: `<secret name>`               | Finished |
| Automatic check → check failed     | The heartbeat check failed in: `<secret name>` `<reason>` | Failed   |

<Note>
  Every Heartbeat task uses the task name **Heartbeat check**. When a task shows **Failed**, the reason appears in the **Details** column — a known reason is "The host is unavailable."
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Add a secret" icon="key" href="/docs/pam/secrets/add-secret">
    Full secret configuration reference, including the Automation tab.
  </Card>

  <Card title="Remote password rotation" icon="refresh-cw" href="/docs/pam/secrets/remote-password-rotation">
    Automatically change a password instead of just checking it.
  </Card>

  <Card title="Heartbeat API endpoint" icon="plug" href="/docs/api/acb/endpoints/heartbeat">
    Trigger and configure Heartbeat checks via the ACB API or CLI.
  </Card>

  <Card title="Audit log" icon="file-text" href="/docs/administration/audit-log">
    Full audit trail reference.
  </Card>
</CardGroup>
