> For the complete documentation index, see [llms.txt](https://docs.cipp.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cipp.app/user-documentation/tools/custom-tests.md).

# Custom Tests

This page lists the custom tests you have created, which run alongside CIPP's built-in tests and can be surfaced in the [CIPP Dashboard](/user-documentation/dashboard.md)or the [Report Builder](/user-documentation/tools/report-builder/builder.md).

### Feature Walkthrough

{% @storylane/embed subdomain="app" url="<https://app.storylane.io/share/qevotii3ats1>" linkValue="qevotii3ats1" %}

## Action Buttons

**Add Test** opens the test editor with a blank test:

{% content-ref url="/pages/8SRaAR9n2LIXCodpNWXt" %}
[Add/Edit Custom Test](/user-documentation/tools/custom-tests/add.md)
{% endcontent-ref %}

<details>

<summary>Import from GitHub</summary>

Opens the **Browse Custom Test Catalog** flyout, listing custom tests published in the community-repos registered with your instance. Search for a test, preview it, then select **Import** to add it to your own tests.

There is no option to import from one of your tenants, as custom tests are not tenant objects.

</details>

## Table Details

| Column                | Description                                                                                                                                                                                                                   |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Script Name           | The display name of the script.                                                                                                                                                                                               |
| Description           | The description set on the script.                                                                                                                                                                                            |
| Enabled               | Whether the test runs with the rest of the tests on schedule.                                                                                                                                                                 |
| Alert On Failure      | Whether CIPP sends an alert when the test produces a result matching its configured alert statuses.                                                                                                                           |
| Result Mode           | How the test's pass or fail state is decided. `Auto` lets the script's own output determine the outcome, while `Always Pass`, `Always Info` and `Always Investigate` force that result regardless of what the script returns. |
| Return Type           | `JSON` or `Markdown`.                                                                                                                                                                                                         |
| Category              | Existing options: `License Management`, `Security`, `Compliance`, `User Management`, `Group Management`, `Device Management`, `Guest Management`, `General`, or any custom category you create.                               |
| Pillar                | Classifies which area the test belongs to. One of `Identity`, `Devices`, `Data`.                                                                                                                                              |
| Risk                  | The risk label associated with the script. One of `Low`, `Medium`, `High`, `Critical`.                                                                                                                                        |
| User Impact           | Classifies the impact to the end user. One of `Low`, `Medium`, or `High`.                                                                                                                                                     |
| Implementation Effort | Classifies the effort to remediate a failed test. One of `Low`, `Medium`, or `High`.                                                                                                                                          |
| Version               | The version of the script. Latest is shown by default.                                                                                                                                                                        |
| Created By            | The UPN of the user that created the script.                                                                                                                                                                                  |
| Created Date          | Relative time since the script was created.                                                                                                                                                                                   |

## Table Actions

<table><thead><tr><th>Action</th><th>Description</th><th data-type="checkbox">Bulk Action Available</th></tr></thead><tbody><tr><td>Edit Test</td><td>Opens <a data-mention href="/pages/8SRaAR9n2LIXCodpNWXt">/pages/8SRaAR9n2LIXCodpNWXt</a> with the selected test populated.</td><td>false</td></tr><tr><td>View Versions</td><td>Opens <a data-mention href="/pages/RFUBgPJzakt6UGt1Wp8S">/pages/RFUBgPJzakt6UGt1Wp8S</a> for the selected test script.</td><td>false</td></tr><tr><td>Enable Test</td><td>Enables the selected test to run with the rest of the test suite. Only shown on tests that are currently disabled.</td><td>true</td></tr><tr><td>Disable Test</td><td>Stops the selected test from running. Only shown on tests that are currently enabled.</td><td>true</td></tr><tr><td>Enable Alerts</td><td>Enables alerting for the selected test. Only shown where alerts are currently off.</td><td>true</td></tr><tr><td>Disable Alerts</td><td>Turns off alerting for the selected test. Only shown where alerts are currently on.</td><td>true</td></tr><tr><td>Delete Test</td><td>Permanently deletes the selected test, including every version of it.</td><td>true</td></tr><tr><td>Save to GitHub</td><td>Publishes the selected test to a community repository, so it can be shared or reused elsewhere. You choose the repository and supply a commit message. Only shown when the GitHub integration is enabled.</td><td>true</td></tr></tbody></table>

{% hint style="warning" %}
Deleting a test removes all of its versions and cannot be undone. Where you only want the test to stop running, disable it instead.
{% endhint %}

{% hint style="info" %}
Only repositories you have write access to are offered when saving to GitHub. Where the list is empty, the repositories registered with your instance are all read-only, which includes the built-in CyberDrain ones.
{% endhint %}

***

## Feature Requests / Ideas

We value your feedback and ideas. Please raise any [feature requests](https://github.com/CyberDrain/CIPP/issues/new?template=feature.yml) on GitHub.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.cipp.app/user-documentation/tools/custom-tests.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
