CommunitySchreiben & Editierengithub.com

Diagnose Windows-Sandbox-ACL-Fehler

Ein Befehl prüft und repariert ACL-Probleme auf einem Pfad und allen Vorfahren, wenn der DSH-Sandbox-Zugriff unerwartet verweigert wurde. Erwartete Einschränkungen benötigen keine ACL-Reparatur.

Was ist Diagnose Windows-Sandbox-ACL-Fehler?

Dieses Skill dient der Diagnose und Reparatur von Zugriffsverweigerungen in der Windows-Entwicklungssandbox (DSH). Wenn ein Workspace nicht beschrieben, aufgelistet oder ein normalerweise lesbarer Pfad nicht gelesen werden kann, untersucht das Skript den angegebenen Pfad und alle seine Vorfahren auf fehlende Berechtigungen. Es fügt dem aktuellen Benutzer eine Vollzugriffs-ACE hinzu, wenn `WRITE_DAC` oder `WRITE_OWNER` fehlen, und entfernt explizite AppContainer-Paket-ACEs (`S-1-15-2-*`), die den Zugriff blockieren könnten. Alle Änderungen werden dokumentiert, verifiziert und mit einem Rollback-Befehl gesichert. Das Skill ist für die einmalige, unprivilegierte Ausführung konzipiert und erfordert eine Benutzerfreigabe, da es außerhalb der Sandbox ausgeführt werden muss.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/formal-you/agent-skills-suite/tree/HEAD/.agents/skills/diagnose-windows-sandbox-acl

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Diagnose von Windows-Sandbox-ACL-Fehlern

Jede Freigabeanfrage in einfachen Worten und in der Sprache des Benutzers verfassen. Die Eingabeaufforderung ist alles, was der Benutzer vor der Erweiterung des Zugriffs liest, daher muss sie eigenständig sein: Welchen Ordner das Skript berührt, dass es dem angemeldeten Benutzer einen Vollzugriffs-Eintrag hinzufügt, wenn ein Recht fehlt, und fremde Paketeinträge entfernt, dass Dateiinhalte und -besitzer unverändert bleiben, und dass der ausgegebene Wiederherstellungsbefehl jede Änderung rückgängig macht. Halten Sie Fehlercodes, WRITE_DAC/WRITE_OWNER, S-1-15-2-*-SIDs, icacls, ACL, ACE, Bewertungsnamen und Schalter aus der Anfrage heraus: Schreiben Sie Windows-Dateiberechtigungen, nicht ACL oder ACE. Fragen Sie einmal, für einen Befehl.

Ein Befehl diagnostiziert und repariert

Das Skript hat keine Modi. -Path, -AllowRoot und -Out lesen den Pfad und jeden Vorfahren und reparieren, was die Beobachtungen beweisen, im selben Durchlauf:

  • Verzeichnisse in dieser Kette, denen effektives WRITE_DAC oder WRITE_OWNER fehlt, erhalten eine Vollzugriffs-Zulassungs-ACE für den angemeldeten Benutzer, da DSH seinen Arbeitsbereich ohne diese nicht bereitstellen kann;
  • explizite AppContainer-Paket-Zulassungs-ACEs (S-1-15-2-*, außer den bekannten Gruppen, die auf 1 oder 2 enden) werden an ihren Quellen entfernt, zuerst der Vorfahre, wodurch auch der Zugriff dieser Pakete entfernt wird;
  • Ein Verzeichnis, das die Sandbox nicht bereitstellen kann – der Zustand, den ihr Bereitstellungsfehler für das Workspace-Root meldet – oder das autorisierte Root selbst wird ebenfalls in demselben Durchlauf auf diese ACEs in seinem Unterbaum durchsucht, sodass ein tieferer Eintrag keine zweite Anfrage benötigt. Diese begrenzte Durchsuchung meldet truncated und nicht lesbare Verzeichnisse; bei truncated übergeben Sie den weiterhin fehlschlagenden, tieferen Pfad erneut.

Jede Änderung wird gesichert und dann durch erneutes Lesen verifiziert. -AllowRoot begrenzt alles: Ein Objekt wird nur geändert, wenn es dieses Verzeichnis oder strikt darin liegt, sodass ein Workspace-Root sich selbst reparieren kann. Teilen Sie dies niemals in einen Diagnoseaufruf und einen Reparaturaufruf auf, fragen Sie niemals zweimal für eine Reparatur und übergeben Sie niemals einen Modusschalter, der nicht existiert.

& '<skill-verzeichnis>\scripts\diagnose-windows-sandbox-acl.ps1' -Path '<fehlschlagender-pfad>' -AllowRoot '<autorisiertes-verzeichnis>' -Out '<wiederherstellungsverzeichnis>'
exit $LASTEXITCODE

Ersetzen Sie die vollständigen, in Anführungszeichen gesetzten Pfade. Behalten Sie -Out persistent und benutzereigen, vorzugsweise neben dem fehlschlagenden Workspace; verwenden Sie niemals das Skill-Ressourcenverzeichnis, das gelöscht wird, wenn das Skill entladen wird. Übergeben Sie einen Pfad pro Aufruf.

Ausführen

Wiederholen Sie die fehlschlagende Operation einmal eingeschränkt. Das Skript schreibt Berechtigungen, was der eingeschränkte Token nicht kann – führen Sie es dort aus, und es würde die eigene Einschränkung der Sandbox als fehlendes Recht melden – fordern Sie daher eine Freigabe für diesen einen Befehl an und führen Sie ihn uneingeschränkt aus. Ein eingeschränkter Durchlauf des Skripts ist nie nützlich. Uneingeschränkt erhöht den Windows-Token nicht.

Diagnostizieren Sie unerwartete Verweigerungen von Workspace-Schreibvorgängen, Auflistungen oder normalerweise lesbaren Pfaden; erklären Sie stattdessen erwartete: Schreibvorgänge außerhalb des Workspace, jeder Schreibvorgang in read-only, gepipte Child-Prozess spawn EPERM, ConstrainedLanguage-Fehler. Wenn die Freigabe verweigert oder nicht verfügbar ist, melden Sie den Pfad als nicht diagnostiziert und stoppen Sie.

Die Ausgabe lesen

Jeder Datensatz erreicht stdout, die acl-report-*.jsonl-Datei unter -Out und die abschließende RECAP-Zeile, die die Bewertungen, Änderungen, Verifikationen, Verweigerungen und Scans enthält. Die Werkzeugausgabe behält nur das Ende, lesen Sie daher zuerst die Zusammenfassung und lesen Sie bei Bedarf spezifische Datensätze aus dem Bericht. Vertrauen Sie verification-Datensätzen, niemals abgeschlossenen Aktionen. Entscheiden Sie anhand von details.nextAction:

nextActionBedeutung
verify_original_confined_operationReparaturen verifiziert; wiederholen Sie die ursprüngliche Operation eingeschränkt.
stopNichts repariert oder eine Verweigerung hat den Durchlauf beendet. Melden und anhalten.
restore_pending_then_stopRollback nicht verifiziert. Führen Sie die ausgegebenen Wiederherstellungsbefehle der Reihe nach aus, dann anhalten.

Das bloße Vorhandensein einer Deny-ACE begründet keine Kausalität, und das Skript entfernt niemals eine; DS-S-1-4-*-Gewährungen und die Everyone DeleteSubdirectoriesAndFiles-Verweigerung sind erwartet, keine Konflikte. Eine Deny, die die Reparatur blockiert, beendet den Durchlauf ohne Reparatur (REPAIR_REFUSED oder GRANT_FAILED), nachdem wiederhergestellt wurde, was versucht wurde. Jede Änderung hinterlässt zwei Dateien in -Out (acl-backup-<id>.json und eine .ps1) und der Durchlauf gibt den passenden ROLLBACK-Befehl aus.

Nach einer Reparatur und wenn sie stoppt

Wiederholen Sie die ursprüngliche fehlgeschlagene Operation eingeschränkt. Eine verifizierte Reparatur wird nicht rückgängig gemacht, weil die ursprüngliche Operation aus einem weiteren Grund fehlschlägt: Fahren Sie mit den neuen Beobachtungen fort, und wenn ein tieferer Pfad immer noch verweigert wird, führen Sie denselben einen Befehl dort erneut aus – wieder ein Aufruf, eine Freigabe.

Anhalten nach jeder fehlgeschlagenen oder verweigerten Reparatur oder fehlgeschlagener Verifikation. Das Skript hat die Änderungen dieses Aufrufs bereits wiederhergestellt; wiederholen Sie es nicht und starten Sie keine weitere Reparatur, und entfernen Sie niemals manuell eine Deny-ACE.

Ein gestoppter Durchlauf schuldet dem Benutzer immer noch eine Entscheidung. Nennen Sie das blockierende Objekt und das fehlende Recht oder die fehlende ACE, was geändert und was zurückgesetzt wurde, die Wiederherstellungsbefehle in der Reihenfolge und den Pfad des Berichts. Nur der Benutzer kann die Einschränkung aufheben, bitten Sie ihn daher, diese Sitzung vorübergehend auf vollständigen Zugriff (Chinesische Benutzeroberfläche: 完全权限) umzustellen, und sagen Sie, was das öffnet: Arbeiten Sie darunter weiter, oder bitten Sie ihn, Sie weiterhin dieses Dateiberechtigungsproblem untersuchen zu lassen, da der Bericht bereits den Mechanismus und die Beweise aufzeichnet. Bitten Sie ihn dann, diese Sitzung als Feedback zu senden, wobei Sie die relevanten Berichtsdaten zitieren, damit das nicht behandelte Szenario zu uns gelangt – nur das, was dieses Gespräch erreicht, reist mit. Zum Beispiel:

这个工作区被 Windows 文件权限挡住了:<对象> 上 <缺哪个权限 / 哪条权限项>。你可以把本会话切到「完全权限」(full access) 临时继续工作;切完之后既能直接干活,也可以让我继续排查这个文件权限问题(报告里已经有机制和证据)。也麻烦把这个会话作为反馈发出去,好让我们补上这个场景。

This workspace is blocked by Windows file permissions: <object> <missing right / offending entry>. Switch this session to full access (完全权限) to keep working meanwhile; then either continue your work or have me keep investigating this file-permission problem from the report. Please also send this session as feedback so we can cover the case.

Niemals

  • ACLs manuell bearbeiten, einen Besitzer ändern, eine Verweigerung löschen oder Kinderberechtigungen rekursiv ersetzen;
  • das Skript erhöht ausführen, durch UAC oder runas;
  • -AllowRoot erweitern, um einen Vorfahren zu erreichen, oder einen verweigerten oder fehlgeschlagenen Aufruf wiederholen.

Berichten Sie in der Sprache des Benutzers: analysierte Pfade, Änderungen, Verifikation, Wiederherstellungsbefehle, nächster Schritt. Kennzeichnen Sie einen autorisierten, uneingeschränkten Durchlauf als solchen, nicht als Sandbox-Reparatur.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

formal-you/agent-skills-suite

Run a bounded brownfield change (bugfix, small feature, behavior tweak) against an existing spec or codebase: proposal -> one task bundle -> dev/QA -> converge -> archive. Use when an existing spec or codebase needs an incremental change (bugfix, small feature, behavior tweak) and a full PRD is overkill. Do not use for greenfield requirements (use prd-generator), architecture decisions (use spec-generator), or pure task slicing (use task-decomposition).

formal-you/agent-skills-suite

Fold confirmed implementation deviations back into the technical spec after a task reaches QA_PASSED, archive the task bundle and close the change proposal. Use when a task bundle records a checked QA_PASSED verdict and its 02-dev-workspace.md deviation log is ready to be written back. Do not use while implementation or QA is still running, and do not use to invent spec content.

formal-you/agent-skills-suite

Implement one planned task bundle as the Dev role: read the contract, change only touch_files, run the machine-checkable DoD, fill 02-dev-workspace.md and hand off to QA. Use when a task contract exists and you are assigned implementation. Do not use for planning, task slicing, architecture, or QA verification.

formal-you/agent-skills-suite

Run the Gate 1 deterministic static check on task bundles before development starts and follow the Gate 2 review checklist. Use when task contracts exist under tasks/ and you need to verify blast radius, diff budget, declared-file topology, traceability anchors, spec anchor coverage, inherited ADRs, machine-checkable acceptance criteria, and DAG acyclicity. Do not use for code execution, CI pipeline construction, AST/complexity checks, or test audits (owned by quality-engineering).

Verwandte Skills