Agent skill · Audited from source

Audit Permissions

skill · microsoft/power-platform-skillsMIT licenceAudited 18 Oct 2026 · source 8075ef5705c5

★ 1,020pushed today
!CAUTIONGrade C · 79/100 · 6 findings · 8075ef5
1,020repo stars · whole microsoft/power-platform-skills

Is it safe? With care — CAUTION, grade C (79/100). We read this skill's source at commit 8075ef5705c5 and observed filesystem access and no hard-coded secrets. The audit raised 6 findings, 1 critical or high. What it does: Audits existing table permissions on a Power Pages site by analyzing them against site code and Dataverse metadata, then GRADES the configuration with deterministic 1–5 scores across 3 security/usability/correctness…

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “Audit Permissions (microsoft/power-platform-skills)”. Retrieved 18 Oct 2026. https://modelsatlas.com/skills/microsoft/audit-permissions

Trust audit

Audit 0.4.1 · source read 18 Oct 2026

Trust score79/100!CAUTION C
0 critical1 high0 medium5 low0 info

CAUTION means the audit found things worth knowing before you trust this skill. Grade C is shared by 84 of 14,816 audited skills.

What the source does

  • FilesystemDeclared5 observations
  • NetworkNone observedNo outbound calls in the source
  • ShellNone observedNo commands run in the source
  • DependenciesPinnedNothing floats
  • SecretsNone foundNo keys in source

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS0
L1 Static sourceSecrets, path traversal, supply chain, hidden codePASS5
L2 InstructionsPrompt injection, authority framing, hidden directivesFAIL1
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: instruction override, no behavioural pass.

Findings (6)

HIGHPrompt injectionprompt.hide_from_user · SKILL.md:619
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
Write a **2–3 sentence** grader verdict: the top thing the config gets right, the top thing it gets wrong, and the verdict. State the verdict verbatim — **"Safe to go"** when there are **zero major**
Why
asks the agent to act without the user's knowledge
Fix
—
LOWFilesystem / pathfs.traversal · scripts/query-table-lookups.js:16
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const { getAuthToken, makeRequest } = require('../../../scripts/lib/validation-helpers');
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · scripts/query-table-relationships.js:17
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const { getAuthToken } = require('../../../scripts/lib/validation-helpers');
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · scripts/query-table-relationships.js:18
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const { fetchTableRelationships } = require('../../../scripts/lib/query-table-relationships');
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · scripts/validate-audit.js:4
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const { approve, runValidation } = require('../../../scripts/lib/validation-helpers');
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · scripts/validate-audit.js:5
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const { validateReport } = require('../../../scripts/lib/audit-report-validation');
Why
No further detail recorded for this rule.
Fix
—

Audit 0.4.1 · source sha 8075ef5705c5 · 18 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • Publishermicrosoft GitHub organizationOwner of the repository this skill is read from
  • Source foldermicrosoft/power-platform-skills/plugins/power-pages/skills/audit-permissionsThe exact folder we audited
  • LicenceMITAs the repository states it
  • Commit pinned for this verdict8075ef5705c5A new audit runs when the source changes
  • Repository statusNot archivedPushed today
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: Audits existing table permissions on a Power Pages site by analyzing them against site code and Dataverse metadata, then GRADES the configuration with deterministic 1–5 scores across 3 security/usability/correctness…

---
name: audit-permissions
description: >-
  Audits existing table permissions on a Power Pages site by analyzing them against site code
  and Dataverse metadata, then GRADES the configuration with deterministic 1–5 scores across
  3 security/usability/correctness categories (9 dimensions). Detection is anchored by a
  recurring-issue catalog so findings and severities stay consistent run-to-run. Generates an
  HTML report with an at-a-glance verdict and per-category scores in the Overview plus a
  single list of **major/minor** issues (each major issue labelled permissions-only or upstream-caused with a short justification), and suggested fixes.
  Use when the user wants to review, verify, check, score,
  or grade table permissions for security issues.
user-invocable: true
argument-hint: "[optional: specific table or concern]"
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, TaskCreate, TaskUpdate, TaskList, Agent
model: opus
---

> **Plugin check**: Run `node "${PLUGIN_ROOT}/scripts/check-version.js"` — if it outputs a message, show it to the user before proceeding.

# Audit Permissions

Audit existing table permissions on a Power Pages code site. Analyze permissions against the site code and Dataverse metadata, then generate a visual HTML report with **deterministic 1–5 category scores**, an advisory verdict, findings, reasoning, and suggested fixes.

The skill has two parts:

1. **Audit checks** (evidence + remediation) — the per-table A–K checklist that compares every permission against real code usage and Dataverse metadata. It is the **primary issue detector**: it catches concrete, code-grounded problems (missing CRUD, append/appendto, `$expand` gaps, broken parent chains, over-provisioned grants) and emits each as a **major/minor** issue with concrete evidence and a fix.
2. **Scoring** (reproducible result) — a **3-category** rubric (9 dimensions) anchored by a **recurring-issue catalog** of fixed detection triggers + severities, followed by a **single consolidation** into root causes and **one batched root-cause attribution** pass for major issues. It turns the findings into **pure-formula 1–5 category scores** so two runs on the same configuration yield the same numbers.

> **Golden rule of scoring:** you only ever **find and label issues** (`major` / `minor`). You do NOT invent the numeric score. The 1–5 numbers come from a **fixed formula** applied to the issue counts (see [Appendix A](#appendix-a--scoring-model)). Same issue set ⇒ same score.

## Workflow

1. **Verify Site Deployment** — Check that `.powerpages-site` folder and table permissions exist
2. **Gather Configuration** — Read web roles, table permissions, site code, run the shared schema validator, and build the deterministic preflight cross-reference
3. **Analyze & Discover** — Query Dataverse for relationships and lookup columns using deterministic scripts
4. **Run Audit Checks** — Compare permissions against code usage and best practices (A–K checklist)
5. **Score the Configuration** — Detect/label issues by the 3 categories using the recurring-issue catalog, consolidate to distinct root causes (major/minor), compute the 1–5 category scores and the verdict
6. **Root-cause attribution** — In a single batched pass, label every major issue as permissions-only or caused by an upstream artifact, with a one-sentence justification shown in the report
7. **Generate Report** — Create the HTML report (score overview + findings + inventory) and validate it
8. **Present Findings & Track** — Summarize, record skill usage, and ask the user if they want to fix issues

**Important:** Do NOT ask the user questions during analysis. Autonomously gather all data, then present findings.

## Audit completion telemetry

At the very start of Step 1, before site verification, initialize local run state:

```bash
node "${PLUGIN_ROOT}/scripts/emit-audit-permissions-telemetry.js" --action start
```

Parse the JSON stdout and retain its `auditRunId` as `<AUDIT_RUN_ID>` for this invocation. The command does not emit a telemetry event; the existing generic skill invocation event is the start signal. The local run state provides the opaque random ID and start time needed for completion telemetry. Never derive the ID from, or replace it with, a site, environment, tenant, user, path, or report value.

Telemetry is best-effort and must never block the audit. If the initialization command fails or returns no `auditRunId`, continue the audit without completion telemetry. Do not invent an id and do not search local state for the latest run.

On every controlled terminal failure after a run id was returned, close the run before stopping:

```bash
node "${PLUGIN_ROOT}/scripts/emit-audit-permissions-telemetry.js" \
  --action complete \
  --runId "<AUDIT_RUN_ID>" \
  --outcome failure \
  --failureStage "<FAILURE_STAGE>"
```

Use exactly one of these fixed failure stages:

- `site_verification`
- `configuration_gathering`
- `schema_validation`
- `relationship_discovery`
- `audit_checks`
- `scoring`
- `root_cause_attribution`
- `report_rendering`
- `report_validation`
- `metrics_validation`
- `unknown_controlled_failure`

Do not pass error messages, paths, table names, finding content, or other user/site data to the telemetry script. A telemetry completion failure does not change the audit outcome and must not trigger a second completion attempt.

## Task Tracking

At the start of Step 1, create all tasks upfront using `TaskCreate`. Mark each task `in_progress` when starting and `completed` when done.

| Task subject | activeForm | Description |
|-------------|------------|-------------|
| Verify site deployment | Verifying site deployment | Check .powerpages-site folder and table permissions exist |
| Gather configuration | Gathering configuration | Read web roles, table permissions, site code; run validator; build preflight |
| Discover relationships | Discovering relationships | Query Dataverse for lookup columns and relationships |
| 

Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit 8075ef5

Download folder ↗
git clone https://github.com/microsoft/power-platform-skills
git -C power-platform-skills checkout 8075ef5705c5

The author documents no install command, so this uses the repository directly. Our verdict covers commit 8075ef5705c5 only.

Works in which agents?

What its own text says, not a test

AgentStatusMore
CursorMentioned in its text, not testedSkills for Cursor · About Cursor
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. !CAUTION C 79 / 100

    first audit · source 8075ef5705c5

README badge

For maintainers · shows the latest audit

ModelsAtlas: CAUTION CMODELSATLASCAUTION · C
[![ModelsAtlas: CAUTION C](https://modelsatlas.com/skills/microsoft/audit-permissions/badge.svg)](https://modelsatlas.com/skills/microsoft/audit-permissions/)

The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.

Similar skills

Add this badge to your README

[![ModelsAtlas: CAUTION C](https://modelsatlas.com/skills/microsoft/audit-permissions/badge.svg)](https://modelsatlas.com/skills/microsoft/audit-permissions/)

Questions about Audit Permissions

What does the Audit Permissions skill do?
A plugin marketplace for GitHub Copilot and other AI agents that provides Power Platform development plugins, including reusable skills, agents, and commands for building and deploying solutions.
Is Audit Permissions safe to install?
With care. The audit graded it C (79/100) and found 6 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can Audit Permissions access on my machine?
The audit observed that it reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does Audit Permissions work with?
Its documentation mentions cursor. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (8075ef5705c5), read on 2026-10-18. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.