<< All versions

Skill v1.0.0

currentTrusted Publisher100/100
microsoft/sre-agent/redaction-guard
──Details
PublishedOctober 2, 2026 at 12:22 AM
Content Hashsha256:2855a1036371f7c5...
Git SHA
──Files
Files (1 file, 3.4 KB)
SKILL.md3.4 KBactive
SKILL.md · 59 lines · 3.4 KB

version: "1.0.0" metadata: api_version: azuresre.ai/v2 kind: Skill name: redaction-guard description: Use whenever you are about to emit operator-visible content — a chat/thread message, a PagerDuty or ServiceNow note, a commit message or pull-request body, or any report artifact (HTML, PowerPoint, Teams card). Deterministically masks secrets, credentials, tokens, private keys, URI-embedded passwords, and PII so they never appear in the thread or in any deliverable. This is a cross-cutting guardrail invoked by the output-producing skills, not a runbook step. tools:

  • SearchMemory
  • ExecutePythonCode

Zava Learning — Redaction Guard

A cross-cutting safety layer: nothing sensitive ever reaches an operator-visible surface. The triggering alert is symptom-only and the investigation touches Key Vault secrets, connection strings, access tokens and learner PII — none of which may be exposed in chat, notes, PRs, or reports.

Load the standard, then scrub

Retrieve the canonical policy and scrubber with SearchMemory("zava-redaction"). It defines what counts as sensitive, the credential files you must never print, and a deterministic redact() function. Apply redact() (via ExecutePythonCode) to every string you are about to emit — chat summary, note body, PR/commit text, and the assembled HTML/markdown/deck — before it leaves the agent. The scrubber is idempotent, so running it more than once is safe.

What to redact (summary — see zava-redaction for the full list)

  • Secrets & credentials: passwords, PGPASSWORD, connection strings, Key Vault secret values,

client secrets, API / access / account keys, SAS tokens.

  • Tokens: GitHub PATs (gho_/ghp_/github_pat_…), JWTs / AAD access tokens (eyJ…), bearer /

Authorization values.

  • Private keys: any -----BEGIN … PRIVATE KEY----- block, SSH/cert keys.
  • Credentials inside URIs: the password in scheme://user:password@host.
  • PII: email addresses and learner personal data from the database.

Keep resource names, resource groups, regions, app names, alert names, and PR/CR numbers — they are not sensitive and are needed for the narrative.

Hard rules

  • Never read or print credential files. Reference them by name only — never cat / Get-Content

/ echo / type the contents of .git/git-credentials, .env, *.pem, id_rsa*, *.pfx, kubeconfig, ~/.azure/*, or *.tfstate into the thread or a report.

  • When a command can echo a secret (e.g. az keyvault secret show), do not paste its output —

confirm the fact ("secret present / rotated") without revealing the value.

  • When in doubt, redact. Replace with [REDACTED:<CLASS>]; for URI credentials keep the scheme and

username and mask only the password.

How the other skills use this

zava-reporting, pagerduty-incident-update, servicenow-change-management, and pr-delivery each call redact() on their output before emitting. Because loading a separate skill swaps the active toolset, those skills inline the redact() function (retrieved via SearchMemory("zava-redaction")) within their own ExecutePythonCode step rather than handing off here — this skill is the authoritative definition they follow.

Verification

Every operator-visible string has passed through redact() (or equivalent manual masking) and shows [REDACTED:<CLASS>] in place of any secret, token, private key, URI credential, or PII. No credential file was ever printed to the thread or a deliverable.

All versions