Make each issue actionable
Controls you can work through.
For each control, collect evidence another person can verify. Use links to approved systems rather than copying sensitive information into issues.
Jump to ownership, repository hygiene, secret safety, dependencies, code scanning, identity, secret storage, data, AI, delivery, runtime, operations, resilience, and independent review.
All tiersOwnership & classification
Your task: Name accountable business and technical teams, map data flows, and confirm the intended production audience. If you do not know the classification, stop and ask the data owner rather than guessing “Low.”
Evidence: README ownership section, approved data inventory, and confirmation from the owners. Use team aliases, not personal contact details, on public repositories.
Ask Copilot: “Trace the external services and storage this app uses. Produce a data-flow inventory and mark unknown classification decisions.”
All tiersRepository hygiene
Your task: Make a clean clone usable by a teammate: README, ignore rules, lockfiles, approved license or proprietary notice, CODEOWNERS, and SECURITY.md. Require pull requests and approvals on the default branch.
Evidence: A teammate's clean build, file links, active branch protection or ruleset, and valid code-owner teams. Pin third-party Actions to reviewed commit SHAs; a version tag can move.
Watch for: A CODEOWNERS file alone does not enforce owner review. Confirm review requirements and bypass policy separately.
All tiersSecret safety
Your task: Enable secret scanning and push protection when available. Scan source and history with an approved tool. If a secret was committed, revoke and rotate it first; deleting a file or rewriting history does not deactivate a credential.
Evidence: Settings, alert triage, and a rotation/incident record with no secret values. Only placeholder .env.example, .env.sample, and .env.template files are allowed by the filename check.
Watch for: The automated .env check inspects filenames at the current commit, not file contents or Git history. Never interpret it as a comprehensive secret scan.
All tiersDependencies & supply chain
Your task: Inventory packages and licenses, enable Dependabot alerts and scheduled updates, and add dependency review to pull requests where supported. Review unfamiliar packages suggested by AI before installation.
Evidence: Update configuration, dependency review results, and reviewed vulnerability alerts. Accepted risks need an accountable owner, mitigation, and expiry.
Watch for: Enabling alerts does not resolve existing alerts. Availability differs by repository visibility, plan, and security-product access.
All tiersCode scanning & AI-generated code review
Your task: Use CodeQL for supported languages or an approved scanner integrated with GitHub code scanning. Review authorization, input handling, injection boundaries, and errors. Test Copilot Autofix suggestions as you would any other patch.
Evidence: A successful recent analysis at the default-branch head, finding dispositions, negative tests, and a human review of sensitive code.
Watch for: A scan that ran on an older commit does not cover today's code. A scan with no findings is not proof that code is safe.
All tiersIdentity & least privilege
Your task: Use an organization-approved identity provider such as Microsoft Entra ID. Authorize every sensitive server-side operation. Limit runtime identity and integration access to the smallest necessary scope.
Evidence: Identity configuration reviewed by its owner and tests for unauthorized users, access to someone else's record, expired sessions, and privileged operations.
Watch for: An internal hostname, client-side UI check, or model instruction is not authorization. Never grant broad administrator access just to make a deployment succeed.
All tiersProduction secret management
Your task: Prefer identity-based access. On Azure, give the runtime a Managed Identity and retrieve unavoidable secrets from Key Vault with scoped access. Use different resources/configuration for development and production.
Evidence: A runtime identity inventory, vault access review, redacted configuration, and rotation and recovery procedures.
Watch for: Frontend environment variables are often compiled into public bundles. They are not a safe place for API keys. See the Azure deployment path.
All tiersData protection
Your task: Minimize collected data; document purpose, regions, retention, deletion, encryption, access boundaries, and telemetry. Ask privacy/compliance reviewers about regulated data before deployment.
Evidence: An approved data-flow record, residency and retention decisions, deletion tests, and safe logging examples using synthetic data.
Watch for: Application logs, crash dumps, model prompts, backups, and exports are data stores too. Encryption does not replace access controls or retention limits.
Runtime AI onlyAI / LLM safety
Your task: Use approved models and endpoints. Keep keys server-side, check provider data terms, treat retrieved text as untrusted, validate output, and enforce tool permissions outside the model. Add rate, token, and cost limits.
Evidence: Approved model inventory, prompt injection and exfiltration tests, output-schema validation, tool authorization tests, and spending alerts.
Ask Copilot: “Identify every place model output affects an action or query. Propose deterministic validation and negative tests. Do not rely on the system prompt as a security boundary.”
All tiersCI/CD & deployment
Your task: Build and test on pull requests, define infrastructure as code, deploy through separated environments, and protect production with reviewers and branch restrictions. Use OIDC federation rather than long-lived cloud credentials.
Evidence: A successful pipeline, a reviewed federated credential subject, protected environment settings, scoped cloud role, deployment record, and rollback drill.
Watch for: The OIDC check recognizes an Azure login pattern only. It cannot prove the workflow is enabled, a deployment occurred, or the cloud trust is appropriately restricted. Review the example and limitations.
All tiersRuntime hardening & observability
Your task: Require HTTPS, disable debug exposure, patch dependencies/images, and restrict ingress and outbound access. Add health checks, safe logs, metrics, and alerts. On Azure, consider Application Insights and service-specific security baselines.
Evidence: Actual cloud settings, tests from allowed and disallowed networks, alert delivery, and sanitized telemetry.
Watch for: Repository checks do not inspect your cloud subscription. A secure pipeline can still deploy an insecure configuration.
All tiersOperations & decommissioning
Your task: Assign incident and support teams, agree maintenance responsibilities, document recovery, and plan retirement of cloud resources, identities, integrations, and data.
Evidence: An accepted runbook, recovery exercise or justified stateless recovery approach, alert routing, budget owner, and decommission checklist.
Ask Copilot: “Draft a runbook from the deployment configuration and application failure paths. Mark every missing contact, recovery objective, and data-retention decision.”
Moderate + HighRecovery, scale & cost limits
Your task: Agree recovery time/point objectives, exercise restore and dependency outages, and load test safely outside production. Limit cloud and model consumption.
Evidence: Measured restore time and data loss, capacity results against owner-approved thresholds, alerts, and budgets/quotas. A budget notification alone is not necessarily a hard spending cap.
HighIndependent security & privacy review
Your task: Complete a threat model and arrange an assessment by qualified reviewers independent of the builder. Include privacy, compliance, external exposure, regulated data, and privileged integrations as applicable.
Evidence: Reviewer sign-off, resolved findings, and explicit acceptance of residual risk with an owner and expiry. Store sensitive reports in approved restricted systems, linking only safe references.
Watch for: Neither Copilot nor this toolkit can certify regulatory compliance or accept risk on behalf of your organization.