CommunityRédaction et éditiongithub.com

formal-you/agent-skills-suite

Utilisez ce skill sur Windows en cas de refus inattendu d'accès au sandbox DSH : échecs d'écriture ou de listage dans un espace de travail, ou impossibilité de lire un chemin normalement accessible. Une commande intégrée inspecte le chemin et tous ses ancêtres et répare les problèmes ACL qu'elle détecte lors de la même exécution.

Qu'est-ce que agent-skills-suite ?

Ce skill diagnostique et répare les échecs d'autorisations liés au sandbox DSH (Developer Sandbox) sur Windows. Il est destiné aux agents AI fonctionnant sous Windows, confrontés à des refus d'accès inattendus dans un espace de travail DSH. Le skill exécute un script PowerShell unique qui examine le chemin en échec et tous ses ancêtres, puis applique les réparations nécessaires en une seule passe : attribution des droits WRITE_DAC/WRITE_OWNER manquants, suppression des ACE explicites des packages AppContainer (S-1-15-2-*) qui pourraient interférer. Il valide chaque modification par une relecture et génère une sauvegarde complète, incluant des commandes de restauration. Le skill est entièrement autonome : il ne nécessite qu'une seule approbation par exécution et ne doit jamais être exécuté en mode confiné. En cas d'échec ou de refus, il fournit des instructions claires pour demander un accès complet à l'utilisateur.

Compatible avec~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 Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Diagnostiquer les échecs ACL du sandbox Windows

Formulez chaque demande d'approbation en langage simple, dans la langue de l'utilisateur. Le prompt est tout ce que l'utilisateur lit avant d'élargir l'accès, il doit donc être autonome : indiquez quel dossier le script touche, qu'il ajoute l'entrée de contrôle total pour l'utilisateur connecté là où un droit manque et supprime les entrées de package étrangères, que le contenu des fichiers et les propriétaires restent inchangés, et que la commande de restauration annule chaque modification. Évitez les codes d'erreur, WRITE_DAC/WRITE_OWNER, les SID S-1-15-2-*, icacls, ACL, ACE, les noms de verdict et les commutateurs dans la demande : écrivez « autorisations de fichiers Windows », pas ACL ou ACE. Demandez une fois, pour une seule commande.

Une commande unique diagnostique et répare

Le script n'a pas de modes. -Path, -AllowRoot et -Out lisent le chemin et chaque ancêtre et réparent ce que les observations prouvent, dans la même exécution :

  • les répertoires de cette chaîne qui n'ont pas WRITE_DAC ou WRITE_OWNER effectifs reçoivent une ACE d'autorisation de contrôle total pour l'utilisateur connecté, car DSH ne peut pas provisionner son espace de travail sans eux ;
  • les ACE d'autorisation explicites des packages AppContainer (S-1-15-2-*, sauf les groupes bien connus se terminant par 1 ou 2) sont supprimées à leurs sources, ancêtre en premier, ce qui supprime également l'accès de ces packages ;
  • un répertoire que le sandbox ne peut pas provisionner — l'état que son erreur de provisionnement signale sur la racine de l'espace de travail — ou la racine autorisée elle-même voit également sa sous-arborescence recherchée pour ces ACE lors de la même exécution, afin qu'une entrée plus profonde n'ait pas besoin d'une deuxième demande. Cette recherche bornée signale les répertoires truncated et illisibles ; si tronquée, passez le chemin profond toujours en échec une fois de plus.

Chaque modification est sauvegardée, puis vérifiée en la relisant. -AllowRoot borne tout : un objet n'est modifié que s'il s'agit de ce répertoire ou qu'il se trouve strictement à l'intérieur, afin qu'une racine d'espace de travail puisse se réparer elle-même. Ne divisez jamais cela en un appel de diagnostic et un appel de réparation, ne demandez jamais deux fois pour une seule réparation, et ne passez jamais un commutateur de mode qui n'existe pas.

& '<skill-directory>\scripts\diagnose-windows-sandbox-acl.ps1' -Path '<failing-path>' -AllowRoot '<authorized-directory>' -Out '<recovery-directory>'
exit $LASTEXITCODE

Remplacez par des chemins complets et entre guillemets. Gardez -Out persistant et appartenant à l'utilisateur, de préférence à côté de l'espace de travail en échec ; n'utilisez jamais le répertoire des ressources du skill, qui est supprimé lorsque le skill se décharge. Passez un chemin par invocation.

Exécution

Répétez l'opération en échec une fois en mode confiné. Le script écrit les autorisations, ce que le jeton confiné ne peut pas faire — exécutez-le là et il signalerait la propre restriction du sandbox comme un droit manquant — demandez donc l'approbation pour cette commande unique et exécutez-la en mode non confiné. Une exécution confinée du script n'est jamais utile. Le mode non confiné n'élève pas le jeton Windows.

Diagnostiquez les refus inattendus d'écriture dans l'espace de travail, de listage, ou de chemins normalement lisibles ; expliquez plutôt les refus attendus : écritures en dehors de l'espace de travail, toute écriture en mode read-only, spawn EPERM sur les processus enfants en pipeline, erreurs ConstrainedLanguage. Si l'approbation est refusée ou indisponible, signalez le chemin comme non diagnostiqué et arrêtez-vous.

Lecture de la sortie

Chaque enregistrement atteint stdout, le fichier acl-report-*.jsonl sous -Out, et la ligne RECAP finale, qui porte les verdicts, les modifications, les vérifications, les refus et les analyses. La sortie de l'outil ne conserve que sa fin, lisez donc le résumé d'abord, et lisez des enregistrements spécifiques dans le rapport lorsque cela ne suffit pas. Faites confiance aux enregistrements de type verification, jamais aux actions completed. Décidez à partir de details.nextAction :

nextActionSignification
verify_original_confined_operationRéparations vérifiées ; répétez l'opération originale en mode confiné.
stopRien réparé, ou un refus a mis fin à l'exécution. Signalez et arrêtez-vous.
restore_pending_then_stopRestauration en attente non vérifiée. Exécutez les commandes de restauration imprimées dans l'ordre, puis arrêtez-vous.

La seule présence d'une ACE de refus n'établit pas de causalité, et le script n'en supprime jamais ; les autorisations S-1-4-* de DSH et le refus DeleteSubdirectoriesAndFiles pour Tout le monde sont attendus, pas des conflits. Un refus qui bloque la réparation met fin à l'exécution sans réparation (REPAIR_REFUSED, ou GRANT_FAILED) après avoir restauré ce qui a été tenté. Chaque modification laisse deux fichiers dans -Out (acl-backup-<id>.json et son .ps1), et l'exécution imprime la commande ROLLBACK correspondante.

Après une réparation, et en cas d'arrêt

Répétez l'opération originale en échec en mode confiné. Une réparation vérifiée n'est pas annulée parce que l'opération originale échoue pour une raison supplémentaire : continuez à partir des nouvelles observations, et si un chemin plus profond est toujours refusé, exécutez la même commande unique là — encore un appel, une approbation.

Arrêtez-vous après toute réparation échouée ou refusée, ou après une vérification échouée. Le script a déjà restauré les modifications de cette invocation ; ne la répétez pas et ne démarrez pas une autre réparation, et ne supprimez jamais une ACE de refus manuellement.

Une exécution arrêtée doit toujours une décision à l'utilisateur. Nommez l'objet bloquant et le droit ou l'ACE qui lui manque, ce qui a changé et ce qui a été restauré, les commandes de restauration dans l'ordre, et le chemin du rapport. Seul l'utilisateur peut lever la restriction, demandez-lui donc de passer cette session en accès total (Chinese UI: 完全权限) temporairement, et dites ce que cela ouvre : continuer à travailler sous cet accès, ou vous demander de continuer à enquêter sur ce problème d'autorisations de fichiers, puisque le rapport enregistre déjà le mécanisme et les preuves. Demandez-lui ensuite d'envoyer cette session en retour, en citant les enregistrements du rapport qui comptent, afin que le scénario non traité nous parvienne — seules les informations qui arrivent dans cette conversation voyagent avec elle. Par exemple :

这个工作区被 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.

Ne jamais

  • modifier les ACL manuellement, changer un propriétaire, effacer un refus, ou remplacer récursivement les autorisations enfants ;
  • exécuter le script en mode élevé, via UAC ou runas ;
  • élargir -AllowRoot pour atteindre un ancêtre, ou répéter un appel refusé ou échoué.

Signalez dans la langue de l'utilisateur : chemins analysés, modifications, vérification, commandes de restauration, prochaine étape. Étiquetez une exécution autorisée non confinée comme telle, pas comme une réparation du sandbox.

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).

Skills associés