# ContentGuardSource

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/api/tracon.contentguardsource/
> Summary: ContentGuardSource: Where the text handed to an IContentGuard came from.

<div class="api-provenance">Namespace Tracon · Assembly <code>Tracon.Abstractions.dll</code></div>

Where the text handed to an [IContentGuard](/api/tracon.icontentguard/) came from.

```csharp
public enum ContentGuardSource
```

## Fields

`Document = 3` 

Text extracted from a document (for example, retrieved for RAG).

`ModelOutput = 4` 

Text the model itself generated.

`SkillResource = 5` 

Text loaded from a skill's own resource file.

`ToolResult = 2` 

The result of a tool call. See [ContentGuardContext.ToolName](/api/tracon.contentguardcontext/#Tracon_ContentGuardContext_ToolName).

`Unknown = 0` 

The source could not be determined. This is never a reason to relax a
security decision — treat it at least as strictly as the most sensitive
known source.

`UserMessage = 1` 

Text a user typed.

## Remarks

The trust level behind these values is not uniform: a user message can only
poison the sender's own session, while a tool result can carry text another
tenant's data wrote into a shared system (prompt injection). A guard that
wants to apply different rules per source reads this value; the built-in
`PatternContentGuard` deliberately does not — it applies the same
patterns regardless of source.
