> This page is for version 0.8.0.
> For other versions, use one of these documentation indexes:
> - Latest (default): https://docs.nvidia.com/nemo-helix/latest/llms.txt
> - 0.8.0: https://docs.nvidia.com/nemo-helix/v0.8.0/llms.txt
> - 0.7.1: https://docs.nvidia.com/nemo-helix/v0.7.1/llms.txt
> - 0.7.0: https://docs.nvidia.com/nemo-helix/v0.7.0/llms.txt
> - 0.6.0: https://docs.nvidia.com/nemo-helix/v0.6.0/llms.txt
> - 0.5.1: https://docs.nvidia.com/nemo-helix/v0.5.1/llms.txt
> - 0.5.0: https://docs.nvidia.com/nemo-helix/v0.5.0/llms.txt
> - 0.4.0: https://docs.nvidia.com/nemo-helix/v0.4.0/llms.txt
> - 0.3.0: https://docs.nvidia.com/nemo-helix/v0.3.0/llms.txt
> - 0.2.0: https://docs.nvidia.com/nemo-helix/v0.2.0/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo-helix/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo-helix/_mcp/server.

# Default Guardrail Configurations

NeMo Guardrails ships with three built-in guardrail configurations that are automatically created in the `system` workspace.

---

## `default`

Applies no safety checks. Requests that use this configuration are passed directly to the model without modification.

**Use when**: You want to use guardrails infrastructure without applying any rails — for example, during development or as a baseline for comparison.

---

## `content-safety`

Applies NemoGuard Content Safety checks to both user inputs and model outputs using the `nvidia/llama-3.1-nemotron-safety-guard-8b-v3` NIM. Inputs and outputs are classified across 23 safety categories (violence, hate, PII, and others). Unsafe content in the user input or LLM output is blocked.

**Use when**: You want to detect and block harmful, abusive, or policy-violating content in user messages and model responses.

### Prerequisites

The `content-safety` configuration requires the `system/nvidia-llama-3-1-nemotron-safety-guard-8b-v3` Model Entity to be deployed and accessible in the `system` workspace.

The model is available on [build.nvidia.com](https://build.nvidia.com/nvidia/llama-3_1-nemotron-safety-guard-8b-v3) if you do not have access to GPUs. See [Setup](/documentation/get-started) for instructions on creating a `ModelProvider` that routes requests to that endpoint.

See [About Models and Inference](/documentation/models-and-inference) for how models are made available through the platform.

---

## `self-check`

Applies a self-check input rail using the model in the incoming inference request. The rail prompts the model to evaluate whether the user message violates a set of general-purpose content policies (harmful data, impersonation, explicit content, and others) and blocks the message if the model responds "Yes".

Unlike `content-safety`, this configuration does not require a dedicated safety NIM — it uses the main model in the request.

**Use when**: You want a lightweight input guard that works with any model.

---

## Using a Default Configuration

Default configurations live in the `system` workspace. Reference them in your VirtualModel's middleware entry as `system/<config_name>`.

```python
from nemo_helix_plugin.client.client import NemoClient
from nemo_helix_plugin.virtual_models.types import CreateVirtualModelRequest, MiddlewareCall

client = NemoClient.from_config()
```

Create a VirtualModel that uses the `content-safety` default configuration:

#### CLI

```bash
nemo inference virtual-models create guarded-with-defaults \
  --default-model-entity system/nvidia-nemotron-3.5-lightning-30b-a3b \
  --request-middleware '[{"name":"nemo-guardrails","config_type":"guardrail_config","config_id":"system/content-safety"}]' \
  --response-middleware '[{"name":"nemo-guardrails","config_type":"guardrail_config","config_id":"system/content-safety"}]'
```

#### Python SDK

```python
client.inference.virtual_models.create_virtual_model(
    body=CreateVirtualModelRequest(
        name="guarded-with-defaults",
        default_model_entity="system/nvidia-nemotron-3.5-lightning-30b-a3b",
        request_middleware=[
            MiddlewareCall(
                name="nemo-guardrails",
                config_type="guardrail_config",
                config_id="system/content-safety",
            )
        ],
        response_middleware=[
            MiddlewareCall(
                name="nemo-guardrails",
                config_type="guardrail_config",
                config_id="system/content-safety",
            )
        ],
    ),
)
```

Then make inference calls using the VirtualModel:

```bash
nemo chat -m default/guarded-with-defaults "Hello"
```

---

## Cleanup

Delete the VirtualModel when you no longer need it. The `system/content-safety` configuration is platform-managed, so you do not delete it.

#### CLI

```bash
nemo inference virtual-models delete guarded-with-defaults
```

#### Python SDK

```python
client.inference.virtual_models.delete_virtual_model(name="guarded-with-defaults")
```

---

## Related

* [Architecture](/documentation/guardrail-models/core-concepts/architecture) — Understand the middleware pipeline and VirtualModel wiring
* [Configuration Structure](/documentation/guardrail-models/core-concepts/configurations/configuration-structure) — Configuration schema reference
* [Manage Configurations](/documentation/guardrail-models/core-concepts/configurations/manage-configurations) — Create and manage your own configurations
* [Run Inference](/documentation/models-and-inference/run-inference) — Run inference with a guardrail configuration