azure-cicd-security

azure-cicd-security is a skill for Claude Code, Codex from AgenticPawan/FullStack-Pilot. It costs 93 tokens per session (1,156 once invoked), scanned A, original, MIT.

A security review for GitHub Actions workflows that deploy to Azure. GitHub Actions automates tasks such as building and deploying software.

In plain words
What is it for?
Use it to check for long-lived Azure service-principal secrets, missing OIDC login, unprotected production deployments, overly broad roles, and secrets written directly in workflow files.
Why use it?
It detects risky credentials, missing production approval gates, excessive deployment permissions, and unsafe secret references.

Skill for Claude CodeCodex

Part of the pilot-azure plugin — 15 skills, 3 agents shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/agenticpawan/fullstack-pilot/azure-cicd-security
Any agent
npx skills add AgenticPawan/FullStack-Pilot --skill azure-cicd-security
Clone the repo
git clone --depth 1 https://github.com/AgenticPawan/FullStack-Pilot

Made for: Claude Code, Codex.

Or install pilot-azure, the plugin that ships this one along with the rest of its 15 skills, 3 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for azure-cicd-security

README.md
[![agentmods](https://agentmods.dev/badge/skills/agenticpawan/fullstack-pilot/azure-cicd-security.svg)](https://agentmods.dev/skills/agenticpawan/fullstack-pilot/azure-cicd-security)
Your own site
<a href="https://agentmods.dev/skills/agenticpawan/fullstack-pilot/azure-cicd-security"><img src="https://agentmods.dev/badge/skills/agenticpawan/fullstack-pilot/azure-cicd-security.svg" alt="Measured on agentmods" height="20"></a>
Per session 93 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,156 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00093 $0.01156
Opus 5 $0.00046 $0.00578
Sonnet 5 $0.00019 $0.00231
Haiku 4.5 $0.00009 $0.00116

Measured 4d ago against content hash 5e7969d95c94, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

azure-cicd-security scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/pilot-azure/skills/azure-cicd-security/SKILL.md · 141 lines

How it starts

The opening of the file, as written. The whole thing — 141 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Standard IDs

ID Severity What it checks
CICD-001 P0 Long-lived service-principal secret used instead of OIDC federated credentials
CICD-002 P1 No environment protection rules/approval gate on a production deployment
CICD-003 P1 Deployment identity granted broader roles than the resources it actually touches
CICD-004 P1 Secret referenced directly in workflow YAML instead of via GitHub encrypted secrets

Check A — Long-lived secret instead of OIDC federation (CICD-001)

Detection

Grep .github/workflows/*.yml for azure/login@v* using creds:/client-secret: inputs sourced from a stored secret, instead of client-id/tenant-id/subscription-id with no secret at all (OIDC federated credential trust between GitHub and Entra ID). A long-lived service-principal secret sitting in GitHub Secrets is a standing credential that doesn't expire on its own and is a high-value target if the repo or an action dependency is compromised.

BAD — long-lived client secret

- uses: azure/login@v2
  with:
    creds: ${{ secrets.AZURE_CREDENTIALS }} # a JSON blob containing a client secret that never rotates automatically

GOOD — OIDC federated credential, no stored secret

permissions:
  id-token: write # required for OIDC
  contents: read

- uses: azure/login@v2
  with:
    client-id: ${{ secrets.AZURE_CLIENT_ID }}
    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    # No client-secret — GitHub's OIDC token is exchanged for a short-lived Azure token per run.

Check B — No environment protection/approval gate (CICD-002)

Detection

Check whether the production deployment job targets a GitHub environment: with protection rules (required reviewers, wait timer) configured, versus deploying to production on every push to main with no human gate.

BAD — production deploy fires automatically, no approval

Read the full file on GitHub · 141 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 141 lines · 93 tokens per session scan A 5e7969d95c94

Subscribe to this mod's changes

azure-cicd-security is a skill published in the GitHub repository AgenticPawan/FullStack-Pilot (2 stars, last pushed 1mo ago), licensed MIT. It adds 93 tokens to every session and 1,156 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

dxkit-action

Read a dxkit report and execute fixes — prioritize findings by severity, plan the fix sequence, run the fix, verify the score moved, re-baseline if appropriate. Supports a SCOPED pass to burn down one category at a time (dependency/BOM vulnerabilities, security, code quality, tests, docs), and a BASELINE-CLEANUP pass…

vyuh-labs/dxkit · 201 tokens

dxkit-onboard

Walk a customer through setting up dxkit on a repo from scratch — checks state, installs, scaffolds, configures hooks, runs doctor, fixes any gaps, captures the first baseline, sets up branch protection + Codespaces prebuild. Also drives a DETERMINISTIC deep-configuration pass — it runs vyuh-dxkit configure --plan…

vyuh-labs/dxkit · 245 tokens

dxkit-config

Edit dxkit configuration — add/remove paths in .dxkit-ignore, tune .npx vyuh-dxkit.json, adjust .dxkit/policy.json guardrail severity. Use when the user wants to exclude a directory from scanning, change scoring thresholds, or modify what blocks a PR.

vyuh-labs/dxkit · 63 tokens

dxkit-flow

Configure, diagnose, and repair the dxkit UI→API integration gate — set up flow gating, explain the flow-contract diagnosis, fix a net-new broken integration a guardrail flagged, and run the cross-repo handshake. Use when the user says "set up the flow gate", "why is this call unresolved", "the guardrail says I broke…

vyuh-labs/dxkit · 112 tokens

dxkit-allowlist

Manage the dxkit allowlist over its whole lifecycle — list, inspect, audit (including orphaned entries after a re-baseline), bulk-defer newly published dep-vuln advisories, remove stale entries, prune expired ones, and export Snyk-originated suppressions to a .snyk policy. Use when the user says "review our…

vyuh-labs/dxkit · 180 tokens

dxkit-checks

Declare and operate custom repo invariants as first-class guardrail gates — a project rule (a "no imports from X" check, an architecture script, a license audit) or the built-in per-language lint gate. Use when the user says "make our lint errors block the PR", "gate our custom check", "add a repo rule to the…

vyuh-labs/dxkit · 139 tokens