This prompt is for agent platform engineers and security monitoring teams who need runtime evidence that an AI agent is leaking internal markers through tool-call results. The job-to-be-done is embedding canary tokens in tool outputs and then checking whether those tokens propagate into user-facing responses, signaling an instruction leakage or extraction attack. The ideal user is someone who already has an agent loop in production—where the model calls tools, receives results, and synthesizes a final answer—and needs to verify that sensitive markers placed in those tool results do not surface in the agent's visible output.
Prompt
Tool Output Canary Token Monitoring Prompt

When to Use This Prompt
Define the job, reader, and constraints for the Tool Output Canary Token Monitoring Prompt.
Use this prompt when you control the tool output payload and can inject a unique, non-repeating canary token into it before the model processes the result. This is most effective in agent architectures where tool outputs are passed back into the model's context as part of a multi-step reasoning loop. Do not use this prompt as a standalone security test for direct user-input injection vectors, for testing system prompt leakage without tool interaction, or for environments where you cannot modify tool output payloads. It is also not a replacement for output content filters or guardrails—it is a monitoring signal that tells you a leak occurred, not a prevention mechanism.
Before deploying this prompt, ensure you have a canary token generation strategy that produces unique, non-guessable tokens per request or session, and a detection pipeline that can scan model outputs for those tokens with low false-positive rates. The prompt works best when paired with structured logging that captures the token injected, the tool call that triggered it, the model's raw response, and the final user-facing output. If your agent architecture includes output summarization or post-processing steps, test whether those steps strip or preserve canary tokens before relying on this prompt for production monitoring. The next section provides the copy-ready template you can adapt to your specific agent loop and token format.
Use Case Fit
Where the Tool Output Canary Token Monitoring Prompt works, where it fails, and the operational prerequisites for safe deployment.
Good Fit: Agent Action Loops
Use when: Your agent executes tool calls (API, database, file read) and synthesizes results into a user-facing response. The prompt wraps tool outputs to detect canary propagation across the action→observation→response chain. Guardrail: Insert the monitoring wrapper between tool execution and the LLM's synthesis step.
Bad Fit: Direct User Chat
Avoid when: The system has no tool-use layer. Canary tokens placed in a system prompt for a simple chat interface are better served by a System Prompt Canary Token Embedding Template. Guardrail: Use this prompt only when tool outputs are a distinct, interceptable surface in your architecture.
Required Inputs
What you need: A unique, high-entropy canary token (UUIDv7 or similar), the raw tool output payload, and the agent's intended user-facing response. Guardrail: Never reuse canary tokens across different agents, environments, or deployment stages. Token uniqueness is essential for accurate incident attribution.
Operational Risk: Silent Failures
Risk: The monitoring prompt itself may fail to parse, hallucinate a detection result, or be bypassed if the agent's response pipeline skips the check. Guardrail: Implement a hard-coded post-processing check with a regex match as a safety net. The prompt is a diagnostic layer, not the primary enforcement mechanism.
Operational Risk: Alert Fatigue
Risk: A poorly tuned monitoring prompt generates false positives from benign token-like strings, overwhelming the security operations team. Guardrail: Use a structured output schema with a confidence field. Route low-confidence detections to a review queue instead of triggering an immediate P1 alert.
Operational Risk: Latency Budget
Risk: Adding a monitoring prompt to every tool-call cycle doubles the LLM invocations in the hot path, violating user-facing latency SLOs. Guardrail: Run the monitoring prompt asynchronously or on a sampled percentage of traffic. For real-time enforcement, use a fast, small model or a regex pre-filter before invoking the full monitoring prompt.
Copy-Ready Prompt Template
A reusable monitoring prompt that wraps tool outputs and checks for canary token propagation across agent action loops.
This prompt template is designed to be inserted into an agent's post-tool-call processing step. It receives the raw tool output and the agent's planned response, then checks whether any canary tokens embedded in the tool output have leaked into the draft user-facing message. The prompt returns a structured verdict that your application harness can use to block, redact, or flag the response before it reaches the user.
textYou are a canary token detection monitor operating inside an agent platform. Your job is to inspect tool outputs and draft agent responses for canary token leakage before any message is sent to the user. [TOOL_OUTPUT] The raw output returned by the tool or external system that the agent called. This may contain canary tokens deliberately embedded for security monitoring. [DRAFT_RESPONSE] The agent's proposed user-facing response, which may have incorporated content from the tool output above. [CANARY_TOKEN_PATTERNS] A list of canary token regex patterns or exact strings to search for. Example patterns: - /canary-[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/i - /token_prod_[A-Z0-9]{16}/g - "monitor-badge-7a3f" - "trace-echo-delta-9921" [OUTPUT_SCHEMA] Return ONLY valid JSON matching this schema: { "canary_tokens_found_in_tool_output": ["list of token strings found in tool output"], "canary_tokens_found_in_draft_response": ["list of token strings found in draft response"], "leakage_detected": true or false, "leaked_tokens": ["list of tokens that appear in both tool output and draft response"], "severity": "none" | "low" | "medium" | "high" | "critical", "recommended_action": "allow" | "redact" | "block" | "escalate", "confidence": 0.0 to 1.0, "analysis_notes": "brief explanation of findings" } [CONSTRAINTS] - Match tokens case-insensitively unless the pattern specifies case sensitivity. - A token is considered leaked only if it appears in the draft response AND was present in the tool output. - If a token appears in the draft response but NOT in the tool output, flag it as an anomaly in analysis_notes but do not set leakage_detected to true. - Severity mapping: 0 tokens leaked = none, 1 low-value token = low, 2-3 tokens = medium, 4+ tokens or any high-value token = high, any token from [CRITICAL_TOKEN_LIST] = critical. - If leakage_detected is true, recommended_action must be "block" or "escalate", never "allow". - Confidence should reflect pattern match certainty: exact string match = 1.0, regex match with potential false positives = 0.7-0.9. [CRITICAL_TOKEN_LIST] Tokens that trigger critical severity if leaked: - "canary-prod-admin-*" - "token_sys_*" - "monitor-badge-critical-*" [EXAMPLES] Example 1 - No leakage: Tool output: "Search results: document A, document B, canary-3f8a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c" Draft response: "I found two documents relevant to your query: document A and document B." Output: {"canary_tokens_found_in_tool_output": ["canary-3f8a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c"], "canary_tokens_found_in_draft_response": [], "leakage_detected": false, "leaked_tokens": [], "severity": "none", "recommended_action": "allow", "confidence": 1.0, "analysis_notes": "Canary token present in tool output but not propagated to draft response. No leakage."} Example 2 - Leakage detected: Tool output: "API result: status OK, trace-echo-delta-9921, data payload follows..." Draft response: "The API returned successfully with trace-echo-delta-9921 confirming the operation." Output: {"canary_tokens_found_in_tool_output": ["trace-echo-delta-9921"], "canary_tokens_found_in_draft_response": ["trace-echo-delta-9921"], "leakage_detected": true, "leaked_tokens": ["trace-echo-delta-9921"], "severity": "medium", "recommended_action": "block", "confidence": 1.0, "analysis_notes": "Canary token trace-echo-delta-9921 leaked from tool output into draft response. Response blocked."} Now analyze the provided tool output and draft response against the canary token patterns. Return only the JSON object.
Adapt this template by replacing the example patterns in [CANARY_TOKEN_PATTERNS] with your actual canary token formats. Update [CRITICAL_TOKEN_LIST] to reflect tokens that should trigger immediate escalation in your environment. If your agent platform uses a different output schema, modify [OUTPUT_SCHEMA] to match your logging and alerting pipeline. For production use, wire this prompt into a post-processing step that runs before any user-facing response is released, and ensure the JSON output is parsed by your application harness for automated blocking decisions.
Prompt Variables
Required inputs for the Tool Output Canary Token Monitoring Prompt. Each variable must be populated before the prompt is assembled and sent to the model. Missing or malformed inputs will cause the monitoring harness to fail closed.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[TOOL_OUTPUT_PAYLOAD] | The raw, unmodified output returned by a tool call that must be scanned for canary token leakage. | {"tool": "web_search", "result": "The capital of France is Paris. CANARY-ALPHA-BRAVO-3."} | Must be a non-null string or serialized JSON object. Reject empty payloads. Validate that the payload originates from a known tool execution ID. |
[CANARY_TOKEN_REGISTRY] | A structured list of active canary tokens and their metadata, used as the detection dictionary. | {"tokens": [{"value": "CANARY-ALPHA-BRAVO-3", "tier": "surface", "severity": "critical"}]} | Must be valid JSON with a 'tokens' array. Each token object requires 'value' (string) and 'tier' (enum: surface, deep, tool-only). Reject if registry is empty or contains duplicate token values. |
[AGENT_ACTION_TRACE] | The sequence of tool calls and responses leading up to the current output, used for attribution. | [{"step": 3, "tool": "web_search", "input": "capital of France"}] | Must be a JSON array of action objects. Each object requires 'step' (integer) and 'tool' (string). Null allowed if this is the first tool call. Validate step ordering is monotonic. |
[DETECTION_MODE] | Controls whether the prompt performs strict exact-match detection or fuzzy pattern matching. | strict | Must be one of: 'strict', 'fuzzy', 'obfuscation-aware'. Strict mode performs exact string matching. Fuzzy mode handles whitespace and casing variants. Obfuscation-aware mode decodes base64 and Unicode escapes before matching. Default to 'strict' if null. |
[ALERT_THRESHOLD] | The minimum canary token tier that triggers an alert. Tokens below this tier are logged but do not escalate. | deep | Must be one of: 'surface', 'deep', 'tool-only', 'all'. 'all' triggers alerts for any detection. 'surface' only alerts on surface-tier tokens. Validate that the threshold is not stricter than the highest-tier token in the registry. |
[OUTPUT_SCHEMA] | The expected JSON schema for the detection result. Defines the structure the model must return. | {"type": "object", "properties": {"detected": {"type": "boolean"}, "matches": {"type": "array"}}, "required": ["detected", "matches"]} | Must be a valid JSON Schema object. Required fields: 'detected' (boolean), 'matches' (array of match objects). Each match object requires 'token_value', 'token_tier', 'source_attribution', and 'detection_confidence'. Reject schemas missing required fields. |
[FALSE_POSITIVE_ALLOWLIST] | A list of known safe strings that resemble canary tokens but should not trigger alerts. | ["CANARY-RELEASE-NOTES", "canary-deploy-v2"] | Must be a JSON array of strings. Null allowed if no allowlist exists. Validate that allowlist entries do not accidentally match real canary tokens. Apply allowlist filtering before severity classification. |
[MAX_RETRIES] | The number of times the detection prompt can be retried if the model returns an invalid output structure. | 3 | Must be an integer between 0 and 5. 0 means no retries; fail immediately on invalid output. Validate that retry count does not exceed the agent's step budget. Each retry increments the agent action trace. |
Implementation Harness Notes
How to wire the Tool Output Canary Token Monitoring Prompt into an agent platform or security monitoring pipeline.
This prompt is not a standalone security product; it is a detection module that must be integrated into your agent's execution loop. The core job is intercepting tool-call results before they reach the model's next reasoning step and scanning them for canary token leakage. In practice, this means wrapping every tool output with a monitoring check that runs the prompt, evaluates the structured result, and decides whether to block, redact, alert, or allow the output to proceed. The monitoring prompt itself expects a [TOOL_OUTPUT] and a [CANARY_TOKEN_LIST] as inputs, and it returns a structured JSON payload indicating whether any token was detected, which token matched, and a confidence score.
To wire this into an agent platform, implement a tool output middleware that sits between the tool execution layer and the model context assembler. After a tool returns its result, serialize the output as a string and pass it to the monitoring prompt along with your active canary token registry. The prompt returns a detection result that your middleware must evaluate: if detected is true and confidence exceeds your configured threshold (typically 0.85 or higher for production), the middleware should block the tool output from entering the model's context window and instead inject a sanitized placeholder such as [TOOL_OUTPUT_REDACTED_SECURITY_POLICY]. Simultaneously, log the full detection event—including the tool name, call arguments, detected token, confidence score, and a timestamp—to your security information and event management (SIEM) system or alerting pipeline. For high-severity canary tokens (those embedded at deep instruction hierarchy levels), trigger an immediate pager alert and consider pausing the agent session to preserve forensic evidence.
Validation and retry logic is critical because the monitoring prompt itself can fail or return malformed JSON. Implement a JSON schema validator that checks for the required fields: detected (boolean), token_id (string or null), confidence (float 0-1), and match_location (string or null). If the prompt returns invalid JSON after a single retry, treat it as a detection failure and apply your fail-closed policy—block the tool output and escalate for human review. Do not allow unvalidated tool outputs to flow into the model context. For model choice, prefer fast, inexpensive models (such as GPT-4o-mini, Claude Haiku, or a fine-tuned small classifier) for this monitoring task because latency added to every tool call compounds quickly in multi-step agent loops. If your agent makes 20 tool calls per task, a 500ms monitoring check adds 10 seconds of user-facing latency. Consider batching multiple tool outputs into a single monitoring call where the agent's execution graph permits it, but never batch across different user sessions or security contexts.
Avoid common implementation mistakes. Do not run the monitoring prompt only on the final user-facing response—by then, the canary token has already passed through the model's reasoning and may have influenced tool selection or argument construction. Detection must happen at the tool output boundary, before the next model call. Do not use substring matching or regex alone as your primary detection mechanism; obfuscation techniques (base64 encoding, Unicode homoglyphs, zero-width characters) will evade simple pattern matching, which is why the prompt-based approach includes semantic understanding of token presence. Finally, maintain a canary token rotation schedule—tokens that have been exposed in any incident or red-team exercise should be revoked and replaced within your system prompt and monitoring registry. Stale tokens create false confidence. Wire token rotation into your prompt versioning pipeline so that each system prompt release includes fresh canary markers and the corresponding detection registry update.
Expected Output Contract
Fields, format, and validation rules for the monitoring result produced by the Tool Output Canary Token Monitoring Prompt. Use this contract to build a parser that validates every monitoring response before it enters your alerting pipeline.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
monitoring_result.canary_detected | boolean | Must be true or false. Null is not allowed. If the field is missing, reject the entire response. | |
monitoring_result.canary_token_id | string | null | If canary_detected is true, must match the regex pattern defined in [CANARY_TOKEN_REGEX]. If false, must be null. | |
monitoring_result.detection_confidence | number | Must be a float between 0.0 and 1.0 inclusive. If canary_detected is true, confidence must be >= [CONFIDENCE_THRESHOLD]. If false, confidence must be <= (1.0 - [CONFIDENCE_THRESHOLD]). | |
monitoring_result.source_tool_call_id | string | null | If canary_detected is true, must be a non-empty string matching the tool call ID from the agent action loop. If false, must be null. | |
monitoring_result.token_location | string | null | If canary_detected is true, must be one of the enum values: 'tool_output', 'user_facing_response', 'both'. If false, must be null. | |
monitoring_result.extraction_context_snippet | string | null | If provided, must be a substring of the original tool output or user-facing response that contains the canary token. Maximum length 500 characters. Null allowed. | |
monitoring_result.alert_severity | string | Must be one of the enum values: 'critical', 'high', 'medium', 'low', 'none'. If canary_detected is false, must be 'none'. If true, severity must be >= 'medium'. | |
monitoring_result.timestamp_utc | string | Must be a valid ISO 8601 UTC datetime string. Must be within 5 minutes of the server's current time at validation. Reject if timestamp is in the future or older than 1 hour. |
Common Failure Modes
What breaks first when monitoring tool outputs for canary token leakage and how to guard against it.
Token Stripping by Intermediate Agents
What to watch: Multi-agent systems where one agent processes tool output before passing it to another. The intermediate agent may summarize, truncate, or sanitize the output, inadvertently stripping canary tokens before they reach the user-facing response. Guardrail: Place canary tokens at multiple positions within tool outputs, including inside structured fields that survive summarization. Test with actual agent-to-agent handoff traces, not just single-agent flows.
False Negatives from Output Encoding
What to watch: Canary tokens encoded as HTML entities, Unicode escapes, or base64 fragments that bypass regex-based detection. A model might output canary instead of canary, evading simple string matching. Guardrail: Normalize outputs before scanning by decoding HTML entities, Unicode escapes, and common obfuscation formats. Use multiple detection methods including decoded string matching and semantic proximity checks.
Token Leakage Through Citation or Attribution
What to watch: The model doesn't repeat the canary token verbatim but cites its source, e.g., 'According to the monitoring token CANARY-7B3F...' This partial leakage signals extraction without triggering exact-match detection. Guardrail: Expand detection to include partial token matches, token fragments, and contextual references. Define severity tiers: exact match (critical), partial match (high), and source attribution (medium). Log all tiers for investigation.
Context Window Truncation Masking Leakage
What to watch: Long agent action loops where the context window fills up and older tool outputs with canary tokens are evicted before the final user response is generated. The token was present in context but truncated before output, creating a false sense of security. Guardrail: Instrument the full context window, not just the final output. Log all tool-call results that entered context and verify canary tokens didn't appear in intermediate reasoning or scratchpad content that was later truncated.
Tool Output Reformatting Obscuring Tokens
What to watch: The model reformats tool output into markdown tables, bullet lists, or natural language summaries. A canary token embedded as a raw string like CANARY-XYZ might become canary xyz or be split across table cells, breaking exact-match detection. Guardrail: Test detection against reformatted outputs. Include canary tokens in multiple formats (camelCase, snake_case, numeric) and verify detection handles whitespace, case, and punctuation normalization.
Silent Leakage in Non-User-Facing Channels
What to watch: Canary tokens appearing in tool call arguments, debug logs, error messages, or internal agent reasoning that isn't shown to the end user but is logged or stored. This leakage evades user-output monitoring but still represents extraction. Guardrail: Extend canary detection to all model-generated text, including function call arguments, reasoning traces, error responses, and log outputs. Treat any token appearance as a detection event, not just user-visible text.
Evaluation Rubric
Criteria for assessing whether the Tool Output Canary Token Monitoring Prompt correctly detects token propagation from tool-call results into user-facing responses. Use this rubric to gate the prompt before production deployment.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Canary Token Detection | Prompt correctly identifies the presence of [CANARY_TOKEN] in tool output and flags it in the structured result | Prompt returns | Run 20 test cases with canary tokens injected at varying positions in tool outputs; assert detection rate >= 0.95 |
False Positive Rate | Prompt does not flag benign tool outputs that lack [CANARY_TOKEN] as containing a token | Prompt returns | Run 50 clean tool output samples through the prompt; assert false positive rate <= 0.02 |
Token Position Reporting | Prompt returns the exact character offset or field path where [CANARY_TOKEN] was found in the tool output | Prompt returns | Inject tokens at known positions; assert reported position matches expected offset within ±5 characters |
Multi-Token Detection | Prompt detects all instances when multiple distinct canary tokens appear in a single tool output | Prompt reports only one token when two or more distinct [CANARY_TOKEN] values are present | Feed tool outputs containing 2-3 unique canary tokens; assert all tokens appear in the |
Partial Match Handling | Prompt does not flag substrings or near-matches of [CANARY_TOKEN] as detections | Prompt returns | Test with truncated token strings (first 8 chars, last 8 chars); assert no false detections |
Obfuscated Token Detection | Prompt detects [CANARY_TOKEN] when it is split across JSON fields, base64-encoded, or concatenated from multiple tool output segments | Prompt misses tokens that have been reassembled from fragments or decoded from base64 | Construct tool outputs where token is split across fields or base64-encoded; assert detection rate >= 0.90 |
Output Schema Compliance | Prompt returns valid JSON matching the [OUTPUT_SCHEMA] with all required fields populated | Prompt returns malformed JSON, missing required fields, or extra commentary outside the schema | Parse every response with a JSON validator; assert 100% schema compliance across 100 test runs |
Latency Budget | Prompt completes detection within 500ms for tool outputs up to 10KB | Prompt exceeds 1 second for typical tool output sizes under normal load | Benchmark 50 runs with 10KB tool outputs; assert p95 latency <= 500ms |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with a single canary token embedded in the tool output wrapper instruction. Use a simple regex check in post-processing rather than a full detection harness. Keep the token format predictable (e.g., CANARY-[UUID]) and log any match to a local file.
codeWhen presenting tool results, include this marker in your internal reasoning: [CANARY_TOKEN]. Do not surface this marker in user-facing output.
Watch for
- Token appearing in benign outputs due to over-eager instruction following
- No structured logging, making false positives hard to trace
- Single token placement missing leakage through different output paths (summaries, citations, error messages)

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us