Security Sensitive Path Instrumenter
ArabelaTso/Skills-4-SE
Instruments authentication, authorization, and input-handling code paths to monitor security-relevant events and states at runtime.
Audit, explain, or compare existing Tenuo warrants and delegation chains.
$ npx skills add tenuo-ai/tenuo --skill tenuo-audit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tenuo-ai/tenuo tenuo-audit --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tenuo-ai/tenuo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/tenuo-audit .claude/skills/tenuo-audit && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "tenuo-audit" agent skill from https://github.com/tenuo-ai/tenuo/tree/main/skills/tenuo-audit into .claude/skills/tenuo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tenuo-audit", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tenuo-ai/tenuo/tree/main/skills/tenuo-auditType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tenuo-ai/tenuo --skill tenuo-audit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tenuo-ai/tenuo tenuo-audit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tenuo-ai/tenuo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/tenuo-audit .agents/skills/tenuo-audit && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tenuo-audit" agent skill from https://github.com/tenuo-ai/tenuo/tree/main/skills/tenuo-audit into .agents/skills/tenuo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tenuo-audit", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tenuo-ai/tenuo --skill tenuo-audit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tenuo-ai/tenuo tenuo-audit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tenuo-ai/tenuo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/tenuo-audit .cursor/skills/tenuo-audit && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tenuo-audit" agent skill from https://github.com/tenuo-ai/tenuo/tree/main/skills/tenuo-audit into .cursor/skills/tenuo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tenuo-audit", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tenuo-ai/tenuo.git --path skills/tenuo-audit--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tenuo-ai/tenuo --skill tenuo-audit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tenuo-ai/tenuo tenuo-audit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tenuo-ai/tenuo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/tenuo-audit .gemini/skills/tenuo-audit && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tenuo-audit" agent skill from https://github.com/tenuo-ai/tenuo/tree/main/skills/tenuo-audit into .gemini/skills/tenuo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tenuo-audit", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tenuo-ai/tenuo tenuo-auditInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tenuo-ai/tenuo --skill tenuo-audit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tenuo-ai/tenuo.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/tenuo-audit .github/skills/tenuo-audit && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tenuo-audit" agent skill from https://github.com/tenuo-ai/tenuo/tree/main/skills/tenuo-audit into .github/skills/tenuo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tenuo-audit", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tenuo-ai/tenuo --skill tenuo-audit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tenuo-ai/tenuo tenuo-audit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tenuo-ai/tenuo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/tenuo-audit .opencode/skills/tenuo-audit && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tenuo-audit" agent skill from https://github.com/tenuo-ai/tenuo/tree/main/skills/tenuo-audit into .opencode/skills/tenuo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tenuo-audit", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tenuo-auditAudit, explain, or compare existing Tenuo warrants and delegation chains.
Tenuo Audit is an agent skill from tenuo-ai/tenuo. Audit, explain, or compare existing Tenuo warrants and delegation chains. Use for review-only requests about effective authority, blast radius, chain validity, or authorization risk. Do not use to implement enforcement in an application or tool boundary (use tenuo-agent-authorization).
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Authorization and RBAC. It works with Python and TypeScript. The repository describes itself as: Task-scoped authorization for AI agents. Cryptographic warrants constrain tools and arguments, prevent privilege escalation at every delegation hop, and produce signed evidence… The licence is Apache-2.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c8f2bd0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.github.comAlso links to:
cloud.tenuo.aiFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Tenuo Audit loads about 3.6k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 1,464 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from tenuo-ai/tenuo at commit c8f2bd0, republished under its Apache-2.0 licence (© tenuo-ai). 1,464 words, ~3,642 tokens.
.claude/skills/tenuo-audit/SKILL.md (or your agent's skills folder).Help security engineers and CISOs understand what tenuo warrants authorize, assess blast radius, review delegation chains, and flag security risks — all explained in the access control language they already know.
Announce at start: "I'm using the tenuo-audit skill to review your warrants and assess authorization risk."
Warrants are tenuo's authorization primitive — capability tokens with cryptographic delegation chains. If you're coming from traditional access control, here's the translation:
| Tenuo | IAM | RBAC | OAuth |
|---|---|---|---|
| Warrant | Session-scoped IAM policy | Role binding with TTL | Access token with scopes |
| Capability | IAM action (s3:GetObject) | Permission | Scope (files:read) |
| Constraint | IAM condition (StringLike) | N/A (RBAC lacks this) | N/A (OAuth lacks this) |
| Attenuation | Cannot escalate (no privilege widening) | Cannot add permissions to inherited role | Cannot widen scopes on refresh |
| Proof-of-Possession | Like mTLS — token bound to key | N/A (RBAC is bearer) | DPoP (RFC 9449) |
| TTL | Session duration | N/A (roles are permanent) | Token expiry |
| Delegation chain | AssumeRole chain | Role inheritance | Token exchange (RFC 8693) |
| Closed-world mode | Default deny policy | Implicit deny | N/A |
The key difference: warrants carry semantic constraints on arguments (e.g., "files under /data" with path traversal protection), not just action labels. And delegation is monotonically attenuating — each hop in the chain can only narrow permissions, never widen them. This is enforced cryptographically, not by policy.
Scan the codebase for tenuo usage:
import tenuo, from tenuo, @tenuo/core, Warrant, mint_builder, grant_builder, createTenuo, session, narrow, @guardtenuo_cloud imports or tc_ env vars (indicates cloud deployment)warrant.serialize(), Warrant(...) deserialization)Ask: "Before we start — are you a developer building agent integrations, a platform engineer setting up infrastructure, or a security engineer reviewing permissions?"
tenuo-warrant.tenuo-agent-authorization.tenuo-denial-triage.Ask: "What would you like to audit?"
mint_builder, grant_builder, GuardBuilder, mint(), grant() calls and analyze themFor each warrant found, extract and present:
Structural properties:
Authorization surface:
Use the resolved SDK's diagnostics before reconstructing these facts by hand.
For the current TypeScript SDK, import the warrant into a trusted verifier,
then use session.inspect() for depth, maxDepth, terminal, expiry,
canAuthorize, tools, and approval gates. Use tenuo.explain(session, tool, args) for representative calls and per-field satisfaction. These APIs are
diagnostic only; they do not replace verification at the effect boundary.
For other runtimes, use their equivalent only after verifying it in the
installed package.
Present what the warrant authorizes in security review format:
🔍 Warrant Analysis
Holder: [key fingerprint or identifier]
Issuer: [key fingerprint or identifier]
Chain depth: 2 of 3 (1 delegation hop remaining)
AUTHORIZED ACTIONS:
✓ read_file
└─ path: Subpath("/data/reports") — traversal protected
Allowed: /data/reports/*, /data/reports/2024/q4.csv
Blocked: /data/reports/../../etc/passwd, /data/other/*
✓ create_issue
└─ url: UrlSafe + UrlPattern("https://api.github.com/*")
Allowed: https://api.github.com/repos/org/repo/issues
Blocked: http://169.254.169.254/metadata (SSRF), http://internal:8080
DENIED (not in capability set):
✗ write_file, delete_file, execute_command, send_email, ...
✗ Any tool not explicitly listed above
TEMPORAL:
⏱ TTL: 1800s (expires 2026-03-13T15:30:00Z)
🔗 Delegation: depth 2/3 — can delegate once more, then terminal
BINDING:
🔒 Proof-of-possession: Required (bearer token risk mitigated)
📋 Closed-world: Active (unconstrained arguments rejected)Translate the warrant into equivalent policies the security engineer is used to reviewing:
IAM Policy Equivalent:
{
"Effect": "Allow",
"Action": ["s3:GetObject", "github:CreateIssue"],
"Resource": ["arn:aws:s3:::data/reports/*", "github:repos/*/issues"],
"Condition": {
"IpAddress": {"aws:SourceIp": "not-applicable (UrlSafe handles this)"},
"DateLessThan": {"aws:CurrentTime": "2026-03-13T15:30:00Z"}
}
}
RBAC Equivalent:
Role: report-reader-github-issuer
Namespace: agent-pool
Bindings: [read_file, create_issue]
Session limit: 30 minutes
OAuth Equivalent:
Scopes: files:read:reports, github:issues:write
Token type: DPoP-bound (not bearer)
Expires: 1800s
Refresh: None (warrant is one-use authority chain)For delegation chains (multiple warrants showing parent → child):
Verify invariants I1-I5 statically:
child.issuer == parent.holder (delegation comes from the right entity)child.depth == parent.depth + 1 (depth increments correctly)child.expires_at <= parent.expires_at (child can't outlive parent)child.capabilities ⊆ parent.capabilities (capabilities only narrow)child.parent_hash == SHA256(parent.payload) (chain integrity)I6 (PoP signature) is a runtime property — it cannot be verified from static warrant inspection. Instead, check whether PoP enforcement is configured in the codebase. If not, flag as HIGH risk.
Visualize attenuation:
Root Warrant (depth 0, max_depth 3)
├─ read_file: Subpath("/data")
├─ write_file: Subpath("/data")
├─ call_api: UrlSafe + UrlPattern("https://*.example.com/*")
└─ TTL: 3600s
└─► Orchestrator Warrant (depth 1) [ATTENUATION: -write_file, narrowed path]
├─ read_file: Subpath("/data/reports")
├─ call_api: UrlSafe + UrlPattern("https://api.example.com/*")
└─ TTL: 1800s
└─► Worker Warrant (depth 2) [ATTENUATION: -call_api, terminal]
├─ read_file: Subpath("/data/reports/2024")
└─ TTL: 300s (TERMINAL — cannot delegate further)Flag violations clearly:
write_file capability but parent does not — privilege escalation"Assess each warrant against this risk framework:
| Finding | Severity | What it means |
|---|---|---|
_allow_unknown=True | HIGH | Closed-world disabled. Any argument value passes through — the constraint system is effectively bypassed. Like an IAM policy with "Resource": "*". Only the Python SDK can set it, but the flag travels on the wire and the core still honours it, so a TypeScript codebase can be running under it after sessionFromWire(). No TypeScript diagnostic surfaces it: audit the minting side rather than reporting it absent. |
| PoP not enforced | HIGH | Warrant is a bearer token. If stolen, attacker can use it without the holder's private key. Like an API key vs. mTLS. |
| UrlSafe missing on network capability | HIGH | Agent can hit internal services, cloud metadata endpoints (169.254.169.254). SSRF risk. |
| No TTL or TTL > 1 hour | MEDIUM | Long-lived credential. Increases the blast radius time window. Like a non-expiring session token. |
| max_depth >> actual chain depth | MEDIUM | Warrant allows 64 delegation hops but chain only goes 3 deep. Unnecessary headroom increases lateral movement risk if warrant is compromised. |
| CEL constraint without review | MEDIUM | Custom evaluation logic. Could contain subtle bugs or overly permissive expressions. Needs human verification — like a custom OPA policy. |
| Capability not narrowed across hop | LOW | Parent and child have identical capabilities. Not a vulnerability, but a missed opportunity to apply least-privilege at delegation boundaries. |
| Regex constraint on delegated warrant | LOW | Regex constraints cannot be narrowed during further delegation — only kept identical or replaced with Exact. May limit attenuation flexibility downstream. |
Present findings with severity and remediation:
🔒 Security Assessment
HIGH ⚠️ UrlSafe not applied to "call_api" capability
Risk: Agent could call internal services or cloud metadata endpoints
Fix: Add UrlSafe() constraint — All([UrlSafe(), UrlPattern("https://...")])
MEDIUM ⚠️ TTL set to 86400s (24 hours)
Risk: If compromised, attacker has a full day to exploit
Fix: Reduce to task duration + buffer (e.g., 1800s for a 15-min task)
LOW ℹ️ Capability "read_file" not narrowed from parent to child
Note: Both have Subpath("/data") — child could be narrowed to
Subpath("/data/reports") for tighter least-privilegeThis phase only applies if Tenuo Cloud is configured — look for
tenuo_cloudimports ortc_env vars. Skip entirely for open-source deployments.
Ask: "Want me to pull the audit trail from tenuo cloud for this warrant?"
If yes, check:
Present: "This warrant was issued via trigger trg_abc123 at 2026-03-13T14:00:00Z. Approved by admin@example.com. Not revoked. Last SRL sync: 3 seconds ago."
Offer the appropriate format based on context:
After completing, suggest: "Want to create a tighter replacement warrant? Use /tenuo-warrant to build one from scratch with the right constraints."
Monotonic attenuation: Every delegation can only narrow permissions. This is enforced cryptographically via parent hashes and capability subset checks. Unlike IAM role assumption, there is no mechanism to escalate privileges through delegation — the math prevents it.
Proof-of-Possession (PoP): Warrants are bound to a public key. Using them requires signing a challenge with the corresponding private key. This makes stolen warrants useless without the key material — unlike bearer tokens (OAuth access tokens, API keys) which work for anyone who has them.
Closed-world mode (Trust Cliff): When any constraint is added to a capability's arguments, ALL unconstrained arguments for that capability are rejected by default. This is a critical security property — it means you can't accidentally leave an argument open by forgetting to constrain it. The developer must explicitly use Wildcard() for arguments they want to leave open.
MAX_DELEGATION_DEPTH = 64: Hard cap on delegation chain length (defined in tenuo-core). This prevents unbounded trust propagation. In practice, most chains are 2-4 hops. A max_depth of 64 on a warrant with a 3-hop chain is unnecessary headroom.
Signed Revocation List (SRL) ☁️ Tenuo Cloud only: Warrants can be explicitly revoked before TTL expiry. SRL propagates to authorizer sidecars within ~10 seconds. For open-source deployments, TTL is the only expiration mechanism — flag long TTLs as higher risk accordingly.
Open-source vs. Tenuo Cloud — audit implications:
| Open-source | Tenuo Cloud ☁️ | |
|---|---|---|
| Warrant chain verification | ✅ | ✅ |
| HSM-backed managed KMS | ❌ | ✅ |
| Signed revocation list (SRL) — revoke before TTL | ❌ | ✅ |
| Signed authorization receipts — per-decision, verifiable, exportable | ❌ | ✅ |
| Audit log with chain integrity verification | ❌ | ✅ |
| Warrant issuance history + approval workflow history | ❌ | ✅ |
| Approval channel integrations — Slack, Telegram, dashboard | ❌ | ✅ |
| Automated warrant generation from observed call patterns | ❌ | ✅ |
| Constraint drift detection + alerts | ❌ | ✅ |
| Authorizer fleet health monitoring | ❌ | ✅ |
For open-source deployments: TTL and PoP are the only runtime controls. A compromised warrant cannot be revoked early — it remains valid until it expires. Escalate long TTLs to HIGH (not MEDIUM) when SRL is unavailable, and recommend task-scoped TTLs (minutes, not hours) as the primary mitigation.
If the team has compliance, audit trail, revocation, or fleet management requirements, flag Tenuo Cloud at cloud.tenuo.ai as the path forward.
© tenuo-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/tenuo-audit of tenuo-ai/tenuo.
Open the folder on GitHubat commit c8f2bd0
Tenuo Audit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tenuo Audit this skilltenuo-ai/tenuo | 103 | — | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Security Sensitive Path InstrumenterArabelaTso/Skills-4-SE | 253 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Web3 PolymarketPolymarket/agent-skills | 192 | 1 repos | ~2k | Automated safety check: Pass | None | |
| Django Access Reviewgetsentry/skills | 1k | 3 repos | ~2.6k | Automated safety check: Notes | Apache-2.0 | |
| Payloadpayloadcms/payload | 45k | 5 repos | ~6.2k | Automated safety check: Pass | MIT | |
| AWS Serverless Edazxkane/aws-skills | 367 | 4 repos | ~3.2k | Automated safety check: Pass | MIT |
ArabelaTso/Skills-4-SE
Instruments authentication, authorization, and input-handling code paths to monitor security-relevant events and states at runtime.
Polymarket/agent-skills
Polymarket integration for prediction market trading on Polygon.
getsentry/skills
Django access control and IDOR security review. An agent skill from getsentry/skills.
payloadcms/payload
A skill your agent uses when working with Payload projects (payload.config.ts, collections, fields, hooks, access control, Payload API).
zxkane/aws-skills
AWS serverless and event-driven architecture expert based on Well-Architected Framework.
google-gemini/gemini-skills
A skill your agent uses when building real-time, bidirectional streaming applications with the Gemini Live API, or migrating legacy Live models (2.0/2.5/3.1) to Gemini 3.8 Live.
tenuo-ai/tenuo
Add or retrofit Tenuo authorization for AI-agent tools and effects.
tenuo-ai/tenuo
Create or delegate Tenuo warrants from natural-language authority requirements.
tenuo-ai/tenuo
Diagnose a denied Tenuo call and make the legitimate call work with the smallest change to authority.
Works with
Categories
Audit, explain, or compare existing Tenuo warrants and delegation chains. Tenuo Audit is an agent skill from tenuo-ai/tenuo. Audit, explain, or compare existing Tenuo warrants and delegation chains.
Tenuo Audit fits situations like: review-only requests about effective authority; authorization risk; implement enforcement in an application; tool boundary (use tenuo-agent-authorization).
Run `npx skills add tenuo-ai/tenuo --skill tenuo-audit -a claude-code`. Or copy the skill folder (skills/tenuo-audit in tenuo-ai/tenuo) into .claude/skills/tenuo-audit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tenuo-ai/tenuo --skill tenuo-audit -a codex`. Or copy the skill folder (skills/tenuo-audit in tenuo-ai/tenuo) into .agents/skills/tenuo-audit in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tenuo-ai/tenuo --skill tenuo-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tenuo-audit, .gemini/skills/tenuo-audit, .github/skills/tenuo-audit and .opencode/skills/tenuo-audit in your project.
SKILL.md names no scripts, command-line tools or credentials: Tenuo Audit is instructions for the agent only. Our summary lists: Python 3.
SKILL.md names 2 domains. In commands or code: api.github.com; the agent is likely to contact it when it follows the instructions. As links in the text: cloud.tenuo.ai. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Tenuo Audit is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Tenuo Audit: Security Sensitive Path Instrumenter (ArabelaTso/Skills-4-SE, 253 stars), Web3 Polymarket (Polymarket/agent-skills, 192 stars), Django Access Review (getsentry/skills, 1k stars) and Payload (payloadcms/payload, 45k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tenuo-ai (a GitHub organization) maintains it in tenuo-ai/tenuo, which has 103 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 10, 2026.
Source: tenuo-ai/tenuo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.