{"code":"var Component=(()=>{var p=Object.create;var s=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var f=(n,i)=>()=>(i||n((i={exports:{}}).exports,i),i.exports),q=(n,i)=>{for(var t in i)s(n,t,{get:i[t],enumerable:!0})},l=(n,i,t,r)=>{if(i&&typeof i==\"object\"||typeof i==\"function\")for(let a of m(i))!g.call(n,a)&&a!==t&&s(n,a,{get:()=>i[a],enumerable:!(r=h(i,a))||r.enumerable});return n};var b=(n,i,t)=>(t=n!=null?p(v(n)):{},l(i||!n||!n.__esModule?s(t,\"default\",{value:n,enumerable:!0}):t,n)),k=n=>l(s({},\"__esModule\",{value:!0}),n);var u=f((z,o)=>{o.exports=_jsx_runtime});var C={};q(C,{default:()=>d});var e=b(u());function c(n){let i={a:\"a\",blockquote:\"blockquote\",code:\"code\",em:\"em\",h2:\"h2\",h3:\"h3\",img:\"img\",li:\"li\",ol:\"ol\",p:\"p\",pre:\"pre\",span:\"span\",strong:\"strong\",table:\"table\",tbody:\"tbody\",td:\"td\",th:\"th\",thead:\"thead\",tr:\"tr\",ul:\"ul\",...n.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(i.p,{children:\"Vous ouvrez Zoom, vous cliquez sur Share Screen, et macOS affiche exactement la m\\xEAme bo\\xEEte de dialogue que le mois dernier pour vous demander si Zoom a le droit d'enregistrer votre \\xE9cran. Vous aviez d\\xE9j\\xE0 dit oui. Vous ouvrez System Settings, et l'application est bien l\\xE0 : Zoom, dans la liste Screen & System Audio Recording, avec l'interrupteur activ\\xE9. Rien n'est cass\\xE9. Et pourtant on vous a redemand\\xE9.\"}),`\n`,(0,e.jsx)(i.p,{children:\"Une semaine plus tard, il se passe autre chose. Votre outil de sauvegarde n'arrive plus \\xE0 lire votre dossier Mail. Vous v\\xE9rifiez Full Disk Access et l'application y figure, activ\\xE9e, exactement comme elle le devrait. Mais elle se comporte comme si elle n'avait aucune autorisation. Ce n'est pas le m\\xEAme probl\\xE8me, m\\xEAme si la sensation est identique.\"}),`\n`,(0,e.jsx)(i.p,{children:\"Ces deux situations sont trait\\xE9es comme une seule et m\\xEAme chose dans la plupart des conseils que vous trouverez, et c'est pr\\xE9cis\\xE9ment pour cela qu'une grande partie de ces conseils \\xE9choue. Le premier cas est d\\xE9lib\\xE9r\\xE9. Apple a int\\xE9gr\\xE9 une reconfirmation p\\xE9riodique \\xE0 l'autorisation de capture d'\\xE9cran, et aucun r\\xE9glage ne permet de la d\\xE9sactiver. Le second est un vrai dysfonctionnement, avec une cause pr\\xE9cise et identifiable, et cette cause se ram\\xE8ne presque toujours \\xE0 une seule chose : macOS ne consid\\xE8re plus que l'application pr\\xE9sente sur le disque est celle \\xE0 laquelle vous avez accord\\xE9 l'autorisation.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Cet article s\\xE9pare les deux cas, explique le sous-syst\\xE8me qui se trouve derri\\xE8re chacun d'eux et vous donne la bonne solution pour chacun. Il explique aussi pourquoi le conseil le plus r\\xE9pandu sur ce sujet, \\xE0 savoir modifier les permissions de fichiers avec \",(0,e.jsx)(i.code,{children:\"chmod\"}),\" ou lancer une forme de r\\xE9paration des permissions, n'a strictement rien \\xE0 voir avec le syst\\xE8me concern\\xE9. Tout ce qui est d\\xE9montr\\xE9 ci-dessous a \\xE9t\\xE9 test\\xE9 sur un Mac fonctionnant sous macOS 26.5.2, build 25F84, avec System Integrity Protection activ\\xE9.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.img,{alt:\"R\\xE9glages Privacy and Security de macOS affichant le volet Screen and System Audio Recording avec plusieurs applications list\\xE9es\",src:\"/images/blog/mac-screen-recording-full-disk-access-permission-keeps-asking-fix-2026/hero.webp\",width:\"1024\",height:\"541\"})}),`\n`,(0,e.jsx)(i.h2,{id:\"points-cl\\xE9s\",children:\"Points cl\\xE9s\"}),`\n`,(0,e.jsxs)(i.ul,{children:[`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Deux probl\\xE8mes diff\\xE9rents portent le m\\xEAme visage\"}),\" \\u2014 une redemande programm\\xE9e pour la capture d'\\xE9cran est pr\\xE9vue par conception et ne peut pas \\xEAtre d\\xE9sactiv\\xE9e, tandis qu'une autorisation accord\\xE9e mais non fonctionnelle est un v\\xE9ritable d\\xE9faut avec une cause r\\xE9elle.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"TCC lie l'autorisation \\xE0 l'identit\\xE9 de signature de code d'une application, pas \\xE0 son chemin\"}),\" \\u2014 c'est pour cela qu'une autorisation cesse silencieusement de fonctionner apr\\xE8s une mise \\xE0 jour, un d\\xE9placement, ou lorsque deux copies de la m\\xEAme application coexistent sur le disque.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsxs)(i.strong,{children:[(0,e.jsx)(i.code,{children:\"tccutil reset\"}),\" est la seule commande fournie par Apple\"]}),\" \\u2014 il n'existe aucun moyen d'accorder une autorisation depuis le Terminal, et ex\\xE9cuter \",(0,e.jsx)(i.code,{children:\"reset\"}),\" sans identifiant de bundle efface cette autorisation pour toutes les applications du Mac.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsxs)(i.strong,{children:[\"Les bases de donn\\xE9es de confidentialit\\xE9 sont illisibles, m\\xEAme pour \",(0,e.jsx)(i.code,{children:\"ls\"})]}),\" \\u2014 sur un Mac de test avec SIP activ\\xE9, lister l'un ou l'autre des r\\xE9pertoires TCC renvoie \",(0,e.jsx)(i.code,{children:\"Operation not permitted\"}),\", ce qui constitue la preuve la plus claire possible qu'il ne s'agit pas de permissions de fichiers ordinaires.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Apple ne publie pas la liste des noms de services\"}),\" \\u2014 des noms comme \",(0,e.jsx)(i.code,{children:\"ScreenCapture\"}),\" et \",(0,e.jsx)(i.code,{children:\"SystemPolicyAllFiles\"}),\" rel\\xE8vent du savoir communautaire, et tout guide qui les pr\\xE9sente comme de la documentation officielle est en train de deviner.\"]}),`\n`]}),`\n`,(0,e.jsx)(i.h2,{id:\"ce-quest-tcc-et-ce-quil-nest-pas\",children:\"Ce qu'est TCC et ce qu'il n'est pas\"}),`\n`,(0,e.jsx)(i.p,{children:\"Le sous-syst\\xE8me qui d\\xE9cide si une application peut enregistrer votre \\xE9cran, lire votre dossier Mail, utiliser le microphone ou piloter d'autres applications s'appelle TCC. Les initiales signifient Transparency, Consent and Control (transparence, consentement et contr\\xF4le). C'est lui qui produit chacune des bo\\xEEtes de dialogue \\xAB L'application souhaite acc\\xE9der \\xE0\\u2026 \\xBB sur lesquelles vous avez cliqu\\xE9, et c'est lui qui remplit chaque liste de System Settings sous Privacy & Security.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"La page \",(0,e.jsx)(i.code,{children:\"man\"}),\" d'Apple pour le seul outil en ligne de commande de ce domaine le d\\xE9crit en une phrase. Sous NAME, on lit \\xAB tccutil \\u2013 g\\xE9rer la base de donn\\xE9es de confidentialit\\xE9 \\xBB, et la section DESCRIPTION d\\xE9veloppe ainsi : \\xAB La commande tccutil g\\xE8re la base de donn\\xE9es de confidentialit\\xE9, qui stocke les d\\xE9cisions prises par l'utilisateur quant \\xE0 l'acc\\xE8s des applications aux donn\\xE9es personnelles. \\xBB\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Lisez cela attentivement, car la formulation est pr\\xE9cise et elle vous donne la forme de tout le syst\\xE8me. TCC stocke des \",(0,e.jsx)(i.em,{children:\"d\\xE9cisions\"}),\". C'est un registre de consentement. Ce n'est pas la description d'un fichier, c'est la description d'une relation entre une application et une cat\\xE9gorie de donn\\xE9es prot\\xE9g\\xE9es.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"la-base-de-donn\\xE9es-de-confidentialit\\xE9-nest-pas-le-syst\\xE8me-de-fichiers\",children:\"La base de donn\\xE9es de confidentialit\\xE9 n'est pas le syst\\xE8me de fichiers\"}),`\n`,(0,e.jsx)(i.p,{children:\"C'est l'id\\xE9e fausse qui fait perdre le plus de temps, il vaut donc mieux l'\\xE9vacuer imm\\xE9diatement.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Les permissions de fichiers Unix traditionnelles sont des attributs stock\\xE9s sur le fichier lui-m\\xEAme : un propri\\xE9taire, un groupe, et des bits de lecture/\\xE9criture/ex\\xE9cution, modifi\\xE9s avec \",(0,e.jsx)(i.code,{children:\"chmod\"}),\" et \",(0,e.jsx)(i.code,{children:\"chown\"}),\". Elles r\\xE9pondent \\xE0 la question \\xAB quels comptes utilisateurs peuvent toucher \\xE0 ce fichier ? \\xBB\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"TCC r\\xE9pond \\xE0 une question compl\\xE8tement diff\\xE9rente : \\xAB \\xE0 quelle \",(0,e.jsx)(i.em,{children:\"application\"}),\" l'utilisateur a-t-il consenti \\xE0 laisser lire cette cat\\xE9gorie de donn\\xE9es ? \\xBB Le sujet n'est pas le compte utilisateur. C'est l'application. Howard Oakley, de The Eclectic Light Company, a bien formul\\xE9 la distinction dans son article explicatif de novembre 2025 sur les permissions et la confidentialit\\xE9, en \\xE9crivant que \\xAB la protection de la vie priv\\xE9e op\\xE8re en dehors des attributs de fichiers, au moyen d'un syst\\xE8me de r\\xE8gles appliqu\\xE9 \\xE0 chaque application \\xBB.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"La cons\\xE9quence pratique est sans appel. Votre compte utilisateur poss\\xE8de d\\xE9j\\xE0 \",(0,e.jsx)(i.code,{children:\"~/Library/Mail\"}),\", et les bits POSIX indiquent d\\xE9j\\xE0 que vous pouvez le lire. C'est pr\\xE9cis\\xE9ment pour cela qu'une commande de terminal ex\\xE9cut\\xE9e sous votre identit\\xE9 peut le lire alors qu'une application graphique lanc\\xE9e par vous ne le peut pas : les permissions de fichiers n'ont jamais \\xE9t\\xE9 l'obstacle. TCC l'\\xE9tait.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Aucune quantit\\xE9 de \",(0,e.jsx)(i.code,{children:\"chmod\"}),\" ne corrigera donc un probl\\xE8me TCC. Aucune routine de \\xAB r\\xE9paration des permissions \\xBB non plus, un concept qui remonte \\xE0 l'\\xE8re pr\\xE9-APFS, s'appliquait \\xE0 la base de donn\\xE9es des re\\xE7us d'installation, et qu'Apple a retir\\xE9 de Disk Utility il y a des ann\\xE9es. Lancer \",(0,e.jsx)(i.code,{children:\"sudo chmod -R 755\"}),\" sur tout votre dossier personnel pour faire taire une demande d'enregistrement d'\\xE9cran ne servira \\xE0 rien, et peut endommager votre dossier Library. Ne le faites pas.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"les-bases-de-donn\\xE9es-que-vous-ne-pouvez-pas-lire-ni-m\\xEAme-lister\",children:\"Les bases de donn\\xE9es que vous ne pouvez pas lire, ni m\\xEAme lister\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Il existe deux bases de donn\\xE9es TCC. Celle propre \\xE0 l'utilisateur se trouve dans \",(0,e.jsx)(i.code,{children:\"~/Library/Application Support/com.apple.TCC/\"}),\" et contient les d\\xE9cisions qui s'appliquent \\xE0 votre compte. Celle du syst\\xE8me se trouve dans \",(0,e.jsx)(i.code,{children:\"/Library/Application Support/com.apple.TCC/\"}),\" et contient les d\\xE9cisions qui s'appliquent \\xE0 toute la machine, y compris celles qu'un administrateur ou un profil MDM peut d\\xE9finir.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Voici la d\\xE9monstration qui tranche le d\\xE9bat. Sur le Mac de test, avec SIP activ\\xE9, les deux commandes suivantes ont \\xE9t\\xE9 tent\\xE9es :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsxs)(i.code,{children:[(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"ls\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ~/Library/Application\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"\\\\ \"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"Support/com.apple.TCC/\"})]}),`\n`,(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"ls\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /Library/Application\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\"\\\\ \"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"Support/com.apple.TCC/\"})]})]})})}),`\n`,(0,e.jsxs)(i.p,{children:[\"Les deux ont renvoy\\xE9 \",(0,e.jsx)(i.code,{children:\"Operation not permitted\"}),\". Pas \\xAB permission denied \\xBB, qui est la forme que prend un \\xE9chec POSIX, mais la r\\xE9ponse que donne le noyau lorsque System Integrity Protection bloque purement et simplement l'acc\\xE8s. SIP \\xE9tait bien actif : \",(0,e.jsx)(i.code,{children:\"csrutil status\"}),\" a renvoy\\xE9 \",(0,e.jsx)(i.code,{children:\"System Integrity Protection status: enabled.\"})]}),`\n`,(0,e.jsx)(i.p,{children:\"Vous ne pouvez pas lister ces r\\xE9pertoires, lire les bases de donn\\xE9es qu'ils contiennent, ni les modifier. Si un guide vous dit d'ouvrir TCC.db dans un navigateur SQLite et d'y ins\\xE9rer une ligne, il d\\xE9crit une machine dont SIP est d\\xE9sactiv\\xE9, et d\\xE9sactiver SIP pour contourner une demande d'autorisation revient \\xE0 sacrifier une grande partie de l'architecture d\\xE9fensive de votre Mac pour r\\xE9gler une bo\\xEEte de dialogue. Cet article ne vous expliquera pas comment faire cela.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Ce que vous \",(0,e.jsx)(i.em,{children:\"pouvez\"}),\" faire, c'est accorder une autorisation via l'interface de System Settings, r\\xE9initialiser une d\\xE9cision avec \",(0,e.jsx)(i.code,{children:\"tccutil\"}),\", ou laisser un profil MDM \\xE9crire une d\\xE9cision \\xE0 votre place. Ce sont les trois portes. Il n'y en a pas de quatri\\xE8me.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"pourquoi-cette-conception-existe\",children:\"Pourquoi cette conception existe\"}),`\n`,(0,e.jsx)(i.p,{children:\"Si les d\\xE9cisions TCC vivaient dans un fichier ordinaire modifiable, n'importe quelle application ayant un acc\\xE8s en \\xE9criture \\xE0 votre dossier personnel pourrait s'accorder silencieusement l'enregistrement d'\\xE9cran, l'acc\\xE8s \\xE0 la cam\\xE9ra et le libre parcours de votre dossier Mail. La protection ne vaudrait rien. Apple a donc plac\\xE9 les d\\xE9cisions derri\\xE8re SIP, fait de l'interaction utilisateur avec une bo\\xEEte de dialogue dessin\\xE9e par le syst\\xE8me l'unique voie d'\\xE9criture prise en charge, et dot\\xE9 l'outil en ligne de commande d'un seul verbe : reset.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"C'est une conception coh\\xE9rente et, du point de vue de quelqu'un qui tente de r\\xE9parer une autorisation cass\\xE9e \\xE0 23 h, une bo\\xEEte \\xE0 outils tr\\xE8s r\\xE9duite. La majeure partie de cet article porte sur la mani\\xE8re de bien s'en servir. Pour le contexte plus large sur la fa\\xE7on dont macOS superpose Gatekeeper, la notarisation, SIP et TCC, notre \",(0,e.jsx)(i.a,{href:\"/blog/macos-tahoe-security-privacy-complete-guide-2025\",children:\"guide complet de la s\\xE9curit\\xE9 et de la confidentialit\\xE9 sur macOS Tahoe\"}),\" couvre l'architecture environnante.\"]}),`\n`,(0,e.jsx)(i.h2,{id:\"les-deux-probl\\xE8mes-distincts\",children:\"Les deux probl\\xE8mes distincts\"}),`\n`,(0,e.jsx)(i.p,{children:\"Passons maintenant \\xE0 la s\\xE9paration dont d\\xE9pend tout le reste de cet article.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"probl\\xE8me-un--la-redemande-d\\xE9lib\\xE9r\\xE9e\",children:\"Probl\\xE8me un : la redemande d\\xE9lib\\xE9r\\xE9e\"}),`\n`,(0,e.jsx)(i.p,{children:\"Pendant le cycle b\\xEAta de macOS 15 Sequoia en 2024, Apple a introduit une reconfirmation p\\xE9riodique pour la capture d'\\xE9cran et d'audio. Toute application qui capture votre \\xE9cran se voit demander une reconfirmation selon un calendrier, sans possibilit\\xE9 de refus.\"}),`\n`,(0,e.jsx)(i.p,{children:\"Le comportement initial en b\\xEAta \\xE9tait hebdomadaire, et une redemande survenait \\xE9galement apr\\xE8s chaque red\\xE9marrage. Cela a suscit\\xE9 de vives critiques publiques. MacRumors rapportait en ao\\xFBt 2024 que \\xAB les fen\\xEAtres surgissantes relatives aux autorisations d'enregistrement d'\\xE9cran apparaissaient chaque semaine tout au long du processus de test b\\xEAta, mais Apple a ajust\\xE9 la fr\\xE9quence en r\\xE9ponse aux retours des utilisateurs \\xBB, et que la b\\xEAta \\xE9tait pass\\xE9e \\xE0 une r\\xE9autorisation mensuelle. 9to5Mac et iDownloadBlog ont rapport\\xE9 le m\\xEAme changement \\xE0 partir de la m\\xEAme b\\xEAta. La demande \\xE0 chaque red\\xE9marrage a \\xE9t\\xE9 supprim\\xE9e en m\\xEAme temps. La bo\\xEEte de dialogue propose un bouton \\xAB Allow For One Month \\xBB et une option pour ouvrir System Settings, et MacRumors notait alors qu'\\xAB il ne semble pas exister de moyen pour les utilisateurs d'accorder de fa\\xE7on permanente l'acc\\xE8s \\xE0 l'enregistrement d'\\xE9cran, mais une fen\\xEAtre mensuelle est au moins plus pratique qu'une fen\\xEAtre hebdomadaire \\xBB.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Passons maintenant \\xE0 la partie honn\\xEAte. \",(0,e.jsx)(i.strong,{children:\"Je n'ai pas pu v\\xE9rifier la cadence actuelle dans la g\\xE9n\\xE9ration macOS 26 aupr\\xE8s d'une source faisant autorit\\xE9.\"}),\" La page d'assistance d'Apple consacr\\xE9e \\xE0 ce volet, \\xAB Autoriser des apps \\xE0 utiliser l'enregistrement de l'\\xE9cran et de l'audio \\xBB dans le guide d'utilisation du Mac pour macOS Tahoe 26, d\\xE9crit comment ouvrir le volet et comment r\\xE9pondre \\xE0 la bo\\xEEte de dialogue, et ne dit absolument rien d'une r\\xE9approbation p\\xE9riodique. Les sources secondaires qui traitent de macOS 26 se contredisent, certaines d\\xE9crivant une redemande hebdomadaire et d'autres mensuelle, et aucune ne cite quoi que ce soit.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Voici donc ce que l'on peut affirmer avec certitude et ce que l'on ne peut pas. \",(0,e.jsx)(i.strong,{children:\"Confirm\\xE9 :\"}),\" la redemande p\\xE9riodique a \\xE9t\\xE9 introduite pendant le cycle Sequoia, s'applique \\xE0 la capture de l'\\xE9cran et de l'audio syst\\xE8me, propose une autorisation d'un mois et n'offre aucun interrupteur d'arr\\xEAt c\\xF4t\\xE9 utilisateur. \",(0,e.jsx)(i.strong,{children:\"Confirm\\xE9 :\"}),\" la documentation d'assistance actuelle d'Apple pour ce volet n'en fait aucune mention. \",(0,e.jsx)(i.strong,{children:\"Non confirm\\xE9 :\"}),\" l'intervalle exact dans la g\\xE9n\\xE9ration macOS 26. Si votre Mac redemande \\xE0 peu pr\\xE8s une fois par mois, cela correspond \\xE0 ce qu'Apple a livr\\xE9 dans Sequoia. S'il demande bien plus souvent, lisez le diagnostic de panne ci-dessous, car une redemande fr\\xE9quente est un probl\\xE8me diff\\xE9rent.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Ce qu'il est le plus utile de savoir sur le probl\\xE8me un, c'est qu'\",(0,e.jsx)(i.strong,{children:\"il ne s'agit pas d'un d\\xE9faut et qu'il n'y a rien \\xE0 r\\xE9parer.\"}),\" Cliquer sur Allow prend une seconde, et la bo\\xEEte de dialogue \",(0,e.jsx)(i.em,{children:\"est\"}),\" la reconfirmation : vous n'avez donc rien \\xE0 r\\xE9activer dans System Settings. Tout guide qui vous dit de r\\xE9initialiser, r\\xE9installer ou modifier quelque chose en r\\xE9ponse \\xE0 une demande mensuelle vend un rem\\xE8de \\xE0 un patient en bonne sant\\xE9.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Il existe une exception c\\xF4t\\xE9 d\\xE9veloppeur. Apple dispose d'un droit d'acc\\xE8s nomm\\xE9 \",(0,e.jsx)(i.code,{children:\"com.apple.developer.persistent-content-capture\"}),\" qui supprime la demande r\\xE9currente, et le blog de Michael Tsai a compil\\xE9 la discussion des d\\xE9veloppeurs \\xE0 ce sujet en ao\\xFBt 2024. C'est une capacit\\xE9 g\\xE9r\\xE9e, destin\\xE9e aux applications de contr\\xF4le \\xE0 distance et de type VNC : les d\\xE9veloppeurs doivent en faire la demande aupr\\xE8s d'Apple et se la voir accorder. Vous ne pouvez pas l'activer en tant qu'utilisateur. Elle explique seulement pourquoi un petit nombre d'applications d'acc\\xE8s distant ne vous importunent jamais.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"probl\\xE8me-deux--lautorisation-qui-ne-tient-pas\",children:\"Probl\\xE8me deux : l'autorisation qui ne tient pas\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Celui-ci est un v\\xE9ritable d\\xE9faut. Il se pr\\xE9sente comme une application list\\xE9e dans le volet, activ\\xE9e, qui se comporte comme si elle n'avait aucune autorisation ; une application qui dispara\\xEEt du volet apr\\xE8s une mise \\xE0 jour ; une autorisation qui fonctionne jusqu'\\xE0 ce que vous quittiez et relanciez l'application ; deux entr\\xE9es portant le m\\xEAme nom d'application ; un outil qui n'appara\\xEEt jamais dans le volet, m\\xEAme apr\\xE8s l'avoir ajout\\xE9 avec \",(0,e.jsx)(i.code,{children:\"+\"}),\" ; ou une demande \\xE0 chaque lancement plut\\xF4t qu'une fois par mois.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Tout cela a des causes, et la plupart de ces cas partagent une cause unique. C'est l'objet de la prochaine grande section.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Une chose qui n'est \",(0,e.jsx)(i.em,{children:\"pas\"}),\" dans cette liste, bien qu'elle semble y avoir sa place : un Mac qui vous redemande sans cesse le mot de passe de votre trousseau de session. Cela rel\\xE8ve du sous-syst\\xE8me du trousseau, pas de TCC, et rien dans cet article ne le corrigera. Si c'est votre sympt\\xF4me, l'article sur la \",(0,e.jsx)(i.a,{href:\"/blog/mac-keeps-asking-login-keychain-password-macos-tahoe-fix-2026\",children:\"correction de la demande de mot de passe du trousseau de session\"}),\" traite du bon terrain.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"quel-probl\\xE8me-avez-vous\",children:\"Quel probl\\xE8me avez-vous\"}),`\n`,(0,e.jsxs)(i.table,{children:[(0,e.jsx)(i.thead,{children:(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.th,{children:\"Sympt\\xF4me\"}),(0,e.jsx)(i.th,{children:\"Quel probl\\xE8me\"}),(0,e.jsx)(i.th,{children:\"Que faire\"})]})}),(0,e.jsxs)(i.tbody,{children:[(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"Demande de capture d'\\xE9cran environ une fois par mois, l'application fonctionne apr\\xE8s avoir cliqu\\xE9 sur Allow\"}),(0,e.jsx)(i.td,{children:\"Pr\\xE9vu par conception\"}),(0,e.jsx)(i.td,{children:\"Cliquez sur Allow. Rien ne va mal.\"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"Demande \\xE0 chaque lancement\"}),(0,e.jsx)(i.td,{children:\"D\\xE9faut\"}),(0,e.jsx)(i.td,{children:\"Probl\\xE8me d'identit\\xE9 de signature ou de copie en double. Voir ci-dessous.\"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"Activ\\xE9e dans le volet, l'application n'y arrive toujours pas\"}),(0,e.jsx)(i.td,{children:\"D\\xE9faut\"}),(0,e.jsx)(i.td,{children:\"Entr\\xE9e obsol\\xE8te li\\xE9e \\xE0 une ancienne identit\\xE9. R\\xE9attribution propre.\"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"L'application a disparu du volet apr\\xE8s une mise \\xE0 jour\"}),(0,e.jsx)(i.td,{children:\"D\\xE9faut\"}),(0,e.jsx)(i.td,{children:\"La signature a chang\\xE9. R\\xE9accordez.\"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"Deux entr\\xE9es portant le m\\xEAme nom dans le volet\"}),(0,e.jsx)(i.td,{children:\"D\\xE9faut\"}),(0,e.jsx)(i.td,{children:\"Deux copies sur le disque. Trouvez-en une et supprimez-la.\"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"L'outil en ligne de commande fonctionne mais n'appara\\xEEt jamais dans le volet\"}),(0,e.jsx)(i.td,{children:\"Bug connu de macOS 26.1\"}),(0,e.jsx)(i.td,{children:\"Voir la section sur la ligne de commande.\"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"La demande appara\\xEEt, vous cliquez sur Allow, rien ne se passe\"}),(0,e.jsx)(i.td,{children:\"D\\xE9faut\"}),(0,e.jsx)(i.td,{children:\"Souvent l'application n'a jamais \\xE9t\\xE9 enti\\xE8rement quitt\\xE9e. R\\xE9attribution propre.\"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"L'interrupteur est gris\\xE9 avec une mention de profil\"}),(0,e.jsx)(i.td,{children:\"Mac g\\xE9r\\xE9\"}),(0,e.jsx)(i.td,{children:\"Contactez la personne qui administre l'appareil.\"})]}),(0,e.jsxs)(i.tr,{children:[(0,e.jsx)(i.td,{children:\"Une autorisation hors capture redemande chaque mois\"}),(0,e.jsx)(i.td,{children:\"D\\xE9faut\"}),(0,e.jsx)(i.td,{children:\"Seule la capture d'\\xE9cran fait l'objet d'une redemande programm\\xE9e.\"})]})]})]}),`\n`,(0,e.jsx)(i.h2,{id:\"o\\xF9-se-trouve-chaque-autorisation-dans-la-g\\xE9n\\xE9ration-macos-26\",children:\"O\\xF9 se trouve chaque autorisation dans la g\\xE9n\\xE9ration macOS 26\"}),`\n`,(0,e.jsx)(i.p,{children:\"Tous ces volets se trouvent sous la m\\xEAme racine. Ouvrez System Settings, cliquez sur Privacy & Security dans la barre lat\\xE9rale, puis choisissez la cat\\xE9gorie. Les cat\\xE9gories pertinentes pour cet article :\"}),`\n`,(0,e.jsxs)(i.ul,{children:[`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Screen & System Audio Recording.\"}),\" Renomm\\xE9 dans la g\\xE9n\\xE9ration macOS 26 ; il s'appelait Screen Recording auparavant. La description d'Apple tient en une ligne : \\xAB Autorisez des apps \\xE0 enregistrer votre \\xE9cran et votre audio, ou seulement votre audio. Les apps list\\xE9es y ont acc\\xE8s. \\xBB\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Full Disk Access.\"}),\" Les donn\\xE9es utilisateur prot\\xE9g\\xE9es \\xE0 l'\\xE9chelle du syst\\xE8me : Mail, Messages, les donn\\xE9es de Safari, les sauvegardes Time Machine et les dossiers de conteneur des autres applications.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Accessibility.\"}),\" La capacit\\xE9 de contr\\xF4ler votre Mac : d\\xE9placer le pointeur, cliquer, lire le contenu des fen\\xEAtres, piloter les interfaces d'autres applications.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Automation.\"}),\" Le droit, pour une application donn\\xE9e, d'envoyer des Apple events \\xE0 une autre application donn\\xE9e. C'est le seul volet organis\\xE9 par paires plut\\xF4t qu'en liste plate.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Files and Folders.\"}),\" Acc\\xE8s fin aux dossiers : Desktop, Documents, Downloads, volumes amovibles et r\\xE9seau. Une application disposant de Full Disk Access n'a besoin d'aucune entr\\xE9e ici.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Input Monitoring.\"}),\" Permet \\xE0 une application de voir les frappes clavier m\\xEAme lorsqu'elle n'est pas au premier plan.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Camera\"}),\" et \",(0,e.jsx)(i.strong,{children:\"Microphone.\"}),\" Exactement ce que leur nom indique. Si c'est pr\\xE9cis\\xE9ment votre microphone qui se comporte mal, la cha\\xEEne d'autorisations d'entr\\xE9e a ses propres particularit\\xE9s, trait\\xE9es dans le guide sur la \",(0,e.jsx)(i.a,{href:\"/blog/mac-microphone-not-working-macos-tahoe-26-5-input-permissions-fix-2026\",children:\"r\\xE9paration d'un microphone de Mac qui ne fonctionne plus sous macOS Tahoe 26.5\"}),\".\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"Local Network.\"}),\" Plus r\\xE9cent, et source fr\\xE9quente de confusion, car une autorisation de r\\xE9seau local bloqu\\xE9e produit des sympt\\xF4mes qui ne ressemblent en rien \\xE0 un probl\\xE8me de confidentialit\\xE9. Une imprimante qui a cess\\xE9 de r\\xE9pondre en est l'exemple classique, d\\xE9taill\\xE9 pas \\xE0 pas dans \",(0,e.jsx)(i.a,{href:\"/blog/printer-not-working-macos-tahoe-local-network-privacy-airprint-fix-2026\",children:\"la correction AirPrint et confidentialit\\xE9 du r\\xE9seau local\"}),\".\"]}),`\n`]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Deux faits structurels qui comptent pour la suite. La liste que vous voyez est un \",(0,e.jsx)(i.em,{children:\"rendu\"}),\" de la base de donn\\xE9es, et le bug de macOS 26.1 d\\xE9crit plus bas a prouv\\xE9 que le rendu peut \\xEAtre faux alors que la base est juste. Et supprimer une entr\\xE9e avec le bouton \",(0,e.jsx)(i.code,{children:\"-\"}),\" efface la d\\xE9cision plut\\xF4t que de refuser l'application : la prochaine fois que l'application demande, vous obtenez donc une nouvelle invite. Cette distinction est le fondement de la s\\xE9quence de r\\xE9attribution propre.\"]}),`\n`,(0,e.jsx)(i.h2,{id:\"pourquoi-une-autorisation-accord\\xE9e-cesse-de-fonctionner\",children:\"Pourquoi une autorisation accord\\xE9e cesse de fonctionner\"}),`\n`,(0,e.jsx)(i.p,{children:\"Voici le m\\xE9canisme. Si vous comprenez ce seul point, la plupart des comportements d\\xE9routants dans ce domaine deviennent pr\\xE9visibles.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"tcc-se-lie-\\xE0-lidentit\\xE9-de-signature-de-code-pas-\\xE0-un-chemin-ni-\\xE0-un-nom\",children:\"TCC se lie \\xE0 l'identit\\xE9 de signature de code, pas \\xE0 un chemin ni \\xE0 un nom\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Lorsque vous accordez une autorisation \\xE0 une application, macOS n'enregistre pas \\xAB le fichier situ\\xE9 \\xE0 \",(0,e.jsx)(i.code,{children:\"/Applications/Foo.app\"}),\" peut enregistrer l'\\xE9cran \\xBB. Il enregistre une d\\xE9cision li\\xE9e \\xE0 l'\",(0,e.jsx)(i.em,{children:\"identit\\xE9 de signature de code\"}),\" de l'application : son identifiant, et l'exigence cryptographique qui d\\xE9crit qui l'a sign\\xE9e. La note technique TN3127 d'Apple, \\xAB Inside Code Signing: Requirements \\xBB, est la r\\xE9f\\xE9rence sur la fa\\xE7on dont ces exigences sont construites.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"La cons\\xE9quence, c'est ce que personne ne vous dit : \",(0,e.jsx)(i.strong,{children:\"si l'identit\\xE9 de signature change, macOS traite l'application comme une application diff\\xE9rente \\xE0 laquelle rien n'a jamais \\xE9t\\xE9 accord\\xE9.\"}),\" L'ancienne entr\\xE9e reste dans le volet, avec l'air d'\\xEAtre accord\\xE9e, et d\\xE9crit une application qui n'existe plus sous la forme que la base de donn\\xE9es garde en m\\xE9moire. Vous voyez un interrupteur activ\\xE9. Le syst\\xE8me, lui, voit un inconnu.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Vous pouvez inspecter vous-m\\xEAme l'identit\\xE9 d'une application. Sur le Mac de test :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"codesign\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -dv\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --verbose=2\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /System/Applications/Utilities/Terminal.app\"})]})})})}),`\n`,(0,e.jsxs)(i.p,{children:[\"La sortie comprend une ligne \",(0,e.jsx)(i.code,{children:\"Identifier\"}),\", qui est l'identifiant de bundle utilis\\xE9 par le syst\\xE8me (\",(0,e.jsx)(i.code,{children:\"com.apple.Terminal\"}),\" pour Terminal), une cha\\xEEne de lignes \",(0,e.jsx)(i.code,{children:\"Authority\"}),\" nommant les certificats qui l'ont sign\\xE9e, et une ligne \",(0,e.jsx)(i.code,{children:\"TeamIdentifier\"}),\". Pour les applications fournies par Apple, \",(0,e.jsx)(i.code,{children:\"TeamIdentifier\"}),\" indique \",(0,e.jsx)(i.code,{children:\"not set\"}),\", car Apple signe ses logiciels syst\\xE8me via une cha\\xEEne d'autorit\\xE9 diff\\xE9rente de celle qu'utilisent les d\\xE9veloppeurs tiers. Pour une application tierce, vous devriez voir un identifiant d'\\xE9quipe de dix caract\\xE8res et une cha\\xEEne d'autorit\\xE9 incluant un certificat Developer ID.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Cet identifiant d'\\xE9quipe est l'ancrage stable. Une application sign\\xE9e ad hoc, sans identifiant d'\\xE9quipe, est identifi\\xE9e par son seul hachage de code, et un hachage de code change \\xE0 chaque compilation. Une application sign\\xE9e avec un Developer ID poss\\xE8de une identit\\xE9 d'\\xE9quipe stable qui survit aux mises \\xE0 jour. C'est pour cela que certaines applications redemandent apr\\xE8s chaque mise \\xE0 jour et que la plupart ne le font pas.\"}),`\n`,(0,e.jsx)(i.p,{children:\"Passons maintenant aux cas particuliers.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"cas-un--lapplication-a-\\xE9t\\xE9-mise-\\xE0-jour-et-sign\\xE9e-diff\\xE9remment\",children:\"Cas un : l'application a \\xE9t\\xE9 mise \\xE0 jour et sign\\xE9e diff\\xE9remment\"}),`\n`,(0,e.jsx)(i.p,{children:\"L'application a publi\\xE9 une nouvelle version. La nouvelle compilation a \\xE9t\\xE9 sign\\xE9e avec un certificat diff\\xE9rent, ou le d\\xE9veloppeur est pass\\xE9 de la signature ad hoc \\xE0 un Developer ID, ou l'inverse, ou son certificat a expir\\xE9 et il a resign\\xE9 avec un nouveau.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Comment le rep\\xE9rer :\"}),\" le calendrier co\\xEFncide exactement avec une mise \\xE0 jour, et l'application a soit disparu du volet, soit gagn\\xE9 une deuxi\\xE8me entr\\xE9e.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution :\"}),\" supprimez l'entr\\xE9e obsol\\xE8te et r\\xE9accordez l'autorisation. Il n'y a rien d'autre \\xE0 faire ; du point de vue de TCC, l'application est r\\xE9ellement une nouvelle application.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"cas-deux--deux-copies-de-la-m\\xEAme-application-sur-le-disque\",children:\"Cas deux : deux copies de la m\\xEAme application sur le disque\"}),`\n`,(0,e.jsx)(i.p,{children:\"C'est la cause la plus fr\\xE9quente du sympt\\xF4me \\xAB activ\\xE9e mais ne fonctionne pas \\xBB, et la plus facile \\xE0 manquer.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Vous avez t\\xE9l\\xE9charg\\xE9 une application, vous l'avez lanc\\xE9e une fois depuis \",(0,e.jsx)(i.code,{children:\"~/Downloads\"}),\", vous avez accord\\xE9 l'autorisation, puis vous l'avez ensuite gliss\\xE9e dans \",(0,e.jsx)(i.code,{children:\"/Applications\"}),\". Ou bien Homebrew Cask en a install\\xE9 une copie alors que vous en aviez d\\xE9j\\xE0 une. Ou encore vous conservez une version stable dans \",(0,e.jsx)(i.code,{children:\"/Applications\"}),\" et une b\\xEAta dans \",(0,e.jsx)(i.code,{children:\"~/Applications\"}),\". Le volet affiche une ligne avec le nom et l'ic\\xF4ne de l'application ; il ne vous dit pas \\xE0 quelle copie cette ligne correspond. Vous regardez une autorisation accord\\xE9e \\xE0 la copie de \",(0,e.jsx)(i.code,{children:\"~/Downloads\"}),\" alors que vous lancez la copie de \",(0,e.jsx)(i.code,{children:\"/Applications\"}),\".\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Comment le rep\\xE9rer :\"}),\" cherchez toutes les copies pr\\xE9sentes sur le disque.\"]}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"mdfind\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:` \"kMDItemKind == 'Application'\"`}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -name\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"AppName\"'})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"Ou, pour un balayage incluant les copies que Spotlight n'a peut-\\xEAtre pas index\\xE9es :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"find\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /Applications\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ~/Applications\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ~/Downloads\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ~/Desktop\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -maxdepth\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" 3\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -name\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"AppName.app\"'}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#D73A49\",\"--shiki-dark\":\"#F97583\"},children:\" 2>\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"/dev/null\"})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"Si plusieurs chemins remontent, vous tenez votre r\\xE9ponse.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution :\"}),\" supprimez les copies dont vous ne voulez pas, gardez-en exactement une, puis effectuez une r\\xE9attribution propre sur la survivante. Ne sautez pas la suppression : laisser une deuxi\\xE8me copie sur le disque garantit que vous serez de retour ici dans un mois.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"cas-trois--lapplication-a-\\xE9t\\xE9-d\\xE9plac\\xE9e-apr\\xE8s-lattribution\",children:\"Cas trois : l'application a \\xE9t\\xE9 d\\xE9plac\\xE9e apr\\xE8s l'attribution\"}),`\n`,(0,e.jsx)(i.p,{children:\"Apparent\\xE9 au cas deux, mais distinct. Il n'y a qu'une seule copie, mais elle a chang\\xE9 d'emplacement. Certaines applications y survivent proprement et d'autres non, selon la mani\\xE8re dont leur exigence de signature est r\\xE9dig\\xE9e et selon qu'un assistant embarqu\\xE9 a ou non son chemin inscrit dans la structure du parent.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Comment le rep\\xE9rer :\"}),\" l'application fonctionnait, vous avez r\\xE9organis\\xE9 votre dossier Applications ou restaur\\xE9 depuis une migration, et elle est tomb\\xE9e en panne.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution :\"}),\" r\\xE9attribution propre au nouvel emplacement. Si elle a \\xE9t\\xE9 d\\xE9plac\\xE9e dans un sous-dossier de \",(0,e.jsx)(i.code,{children:\"/Applications\"}),\", essayez d'abord de la remettre au premier niveau ; quelques applications dot\\xE9es d'un m\\xE9canisme d'auto-mise \\xE0 jour se comportent mal dans les sous-dossiers.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"cas-quatre--une-mise-\\xE0-jour-incompl\\xE8te-a-invalid\\xE9-la-signature\",children:\"Cas quatre : une mise \\xE0 jour incompl\\xE8te a invalid\\xE9 la signature\"}),`\n`,(0,e.jsx)(i.p,{children:\"Une mise \\xE0 jour a \\xE9t\\xE9 interrompue, un outil de synchronisation a touch\\xE9 au bundle, un antivirus a mis en quarantaine puis restaur\\xE9 un fichier \\xE0 l'int\\xE9rieur, ou une restauration de sauvegarde a reconstruit le bundle de fa\\xE7on imparfaite. La signature ne se valide plus.\"}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"Comment le rep\\xE9rer :\"})}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"codesign\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --verify\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --deep\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --strict\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --verbose=2\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /Applications/AppName.app\"})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"Un bundle sain produit un compte rendu court se terminant par une mention indiquant que l'application est valide sur le disque et satisfait \\xE0 son exigence d\\xE9sign\\xE9e. Un bundle endommag\\xE9 nomme le fichier pr\\xE9cis qui \\xE9choue. Si vous voyez un \\xE9chec ici, aucune manipulation d'autorisations n'y changera quoi que ce soit, car macOS ne fera pas du tout confiance au bundle.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution :\"}),\" r\\xE9installez depuis le t\\xE9l\\xE9chargement d'origine du d\\xE9veloppeur. C'est l'un des rares cas o\\xF9 \\xAB r\\xE9installez l'application \\xBB est r\\xE9ellement la bonne r\\xE9ponse plut\\xF4t qu'un haussement d'\\xE9paules. Un mode de d\\xE9faillance apparent\\xE9 et plus visible du m\\xEAme dommage sous-jacent est la bo\\xEEte de dialogue \\xAB l'application est endommag\\xE9e et ne peut pas \\xEAtre ouverte \\xBB, que nous traitons en d\\xE9tail dans \",(0,e.jsx)(i.a,{href:\"/blog/app-is-damaged-cant-be-opened-macos-tahoe-gatekeeper-quarantine-fix-2026\",children:\"le guide de correction Gatekeeper et quarantaine\"}),\".\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"cas-cinq--les-auto-actualiseurs-\\xE0-la-sparkle-qui-remplacent-leur-propre-bundle\",children:\"Cas cinq : les auto-actualiseurs \\xE0 la Sparkle qui remplacent leur propre bundle\"}),`\n`,(0,e.jsx)(i.p,{children:\"De nombreuses applications Mac distribu\\xE9es en dehors de l'App Store se mettent \\xE0 jour elles-m\\xEAmes \\xE0 l'aide du framework Sparkle ou d'un \\xE9quivalent, en t\\xE9l\\xE9chargeant une nouvelle version et en rempla\\xE7ant leur propre bundle en cours d'ex\\xE9cution.\"}),`\n`,(0,e.jsx)(i.p,{children:\"Quand cela fonctionne correctement, le nouveau bundle porte le m\\xEAme identifiant d'\\xE9quipe et TCC continue de le reconna\\xEEtre. Quand ce n'est pas le cas \\u2014 parce que la mise \\xE0 jour a \\xE9t\\xE9 sign\\xE9e diff\\xE9remment, parce que l'\\xE9change a laiss\\xE9 un bundle partiellement \\xE9crit, ou parce que l'application s'est remplac\\xE9e \\xE0 un chemin l\\xE9g\\xE8rement diff\\xE9rent \\u2014 vous obtenez une redemande ou un \\xE9chec silencieux la prochaine fois que vous utilisez une fonction prot\\xE9g\\xE9e.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Comment le rep\\xE9rer :\"}),\" l'application se met \\xE0 jour toute seule en dehors de l'App Store, et les probl\\xE8mes d'autorisation se concentrent autour du moment de la mise \\xE0 jour.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution :\"}),\" r\\xE9attribution propre une fois la mise \\xE0 jour termin\\xE9e. Si cela se produit \\xE0 chaque mise \\xE0 jour, c'est la configuration de signature du d\\xE9veloppeur qui pose probl\\xE8me, et cela m\\xE9rite de lui \\xEAtre signal\\xE9, car c'est corrigeable de son c\\xF4t\\xE9.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"le-diagnostic-g\\xE9n\\xE9ral\",children:\"Le diagnostic g\\xE9n\\xE9ral\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Face \\xE0 n'importe quel cas \\xAB accord\\xE9e mais ne fonctionne pas \\xBB, posez trois questions dans cet ordre : combien de copies de cette application existent sur le disque (\",(0,e.jsx)(i.code,{children:\"mdfind\"}),\"), le bundle se v\\xE9rifie-t-il (\",(0,e.jsx)(i.code,{children:\"codesign --verify\"}),\"), et la panne est-elle survenue imm\\xE9diatement apr\\xE8s une mise \\xE0 jour ? Ces trois r\\xE9ponses d\\xE9signent presque \\xE0 chaque fois l'un des cinq cas ci-dessus.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.img,{alt:\"Fen\\xEAtre Terminal montrant la sortie de codesign avec les lignes Identifier, Authority et TeamIdentifier pour un bundle d'application macOS\",src:\"/images/blog/mac-screen-recording-full-disk-access-permission-keeps-asking-fix-2026/content-1.webp\",width:\"1024\",height:\"541\"})}),`\n`,(0,e.jsx)(i.h2,{id:\"les-outils-du-terminal--ce-que-tccutil-peut-et-ne-peut-pas-faire\",children:\"Les outils du Terminal : ce que tccutil peut et ne peut pas faire\"}),`\n`,(0,e.jsx)(i.p,{children:\"Il existe exactement un outil en ligne de commande pour ce sous-syst\\xE8me, et ses capacit\\xE9s sont bien plus \\xE9troites que ne le laissent entendre la plupart des guides.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"reset-est-la-seule-commande\",children:\"reset est la seule commande\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Lancez \",(0,e.jsx)(i.code,{children:\"tccutil\"}),\" sans argument sur macOS 26.5.2 et il affiche sa syntaxe d'utilisation :\"]}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsx)(i.span,{className:\"line\",children:(0,e.jsx)(i.span,{children:\"tccutil: Usage: tccutil reset SERVICE [BUNDLE_ID]\"})})})})}),`\n`,(0,e.jsxs)(i.p,{children:[\"C'est l\\xE0 toute l'interface. La page \",(0,e.jsx)(i.code,{children:\"man\"}),\" d'Apple est explicite : \\xAB une seule commande est actuellement prise en charge \\xBB, et la d\\xE9crit ainsi :\"]}),`\n`,(0,e.jsxs)(i.blockquote,{children:[`\n`,(0,e.jsx)(i.p,{children:\"reset    R\\xE9initialise toutes les d\\xE9cisions pour le service sp\\xE9cifi\\xE9, ce qui am\\xE8ne les applications \\xE0 redemander lors de leur prochain acc\\xE8s au service. Si un identifiant de bundle est sp\\xE9cifi\\xE9, le service sera r\\xE9initialis\\xE9 pour ce seul bundle.\"}),`\n`]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Les exemples fournis par Apple dans la page de manuel sont \",(0,e.jsx)(i.code,{children:\"tccutil reset AddressBook\"}),\" et \",(0,e.jsx)(i.code,{children:\"tccutil reset All com.apple.Terminal\"}),\".\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Tirez-en la cons\\xE9quence que la plupart des guides passent sous silence : \",(0,e.jsx)(i.strong,{children:\"il n'existe aucune commande d'attribution.\"}),\" Vous ne pouvez pas approuver une autorisation depuis le Terminal. \",(0,e.jsx)(i.code,{children:\"reset\"}),\" oublie une d\\xE9cision afin que l'application redemande ; il ne dit pas oui \\xE0 votre place. Les seules mani\\xE8res de dire oui sont l'interface System Settings et un profil de configuration MDM. Si vous trouvez un guide affirmant qu'une incantation \",(0,e.jsx)(i.code,{children:\"tccutil\"}),\" accorde Full Disk Access, il a tort.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"lavertissement-sur-lidentifiant-de-bundle-qui-compte-le-plus\",children:\"L'avertissement sur l'identifiant de bundle qui compte le plus\"}),`\n`,(0,e.jsx)(i.p,{children:\"C'est le c\\u0153ur pratique de toute la section Terminal, il m\\xE9rite donc son propre espace.\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsxs)(i.code,{children:[(0,e.jsx)(i.span,{className:\"line\",children:(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# DANGEROUS - resets screen recording for EVERY app on the Mac\"})}),`\n`,(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"tccutil\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" reset\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ScreenCapture\"})]}),`\n`,(0,e.jsx)(i.span,{className:\"line\"}),`\n`,(0,e.jsx)(i.span,{className:\"line\",children:(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6A737D\",\"--shiki-dark\":\"#6A737D\"},children:\"# Correct - resets it for one app only\"})}),`\n`,(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"tccutil\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" reset\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ScreenCapture\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" com.example.appname\"})]})]})})}),`\n`,(0,e.jsx)(i.p,{children:\"L'identifiant de bundle est facultatif dans la syntaxe et obligatoire en pratique. Omettez-le et vous venez de dire \\xE0 macOS d'oublier toutes les d\\xE9cisions d'enregistrement d'\\xE9cran de la machine. Zoom, Slack, Discord, Teams, votre outil de capture, votre logiciel d'enregistrement, votre client d'assistance \\xE0 distance : tous vous solliciteront \\xE0 leur prochaine utilisation. Rien n'est cass\\xE9 de fa\\xE7on permanente, mais vous vous \\xEAtes cr\\xE9\\xE9 un apr\\xE8s-midi de bo\\xEEtes de dialogue pour tenter de r\\xE9parer une seule application.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.code,{children:\"tccutil reset All\"}),\" sans identifiant de bundle est encore pire, puisqu'il oublie toutes les d\\xE9cisions, pour tous les services, pour toutes les applications. Si un guide vous dit d'ex\\xE9cuter cela en premi\\xE8re \\xE9tape, fermez le guide.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Ajoutez toujours l'identifiant de bundle.\"}),\" \\xC0 chaque fois, sans exception.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"lordre-de-validation-des-arguments-et-pourquoi-il-peut-masquer-une-faute-de-frappe\",children:\"L'ordre de validation des arguments, et pourquoi il peut masquer une faute de frappe\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Ceci a \\xE9t\\xE9 test\\xE9 directement, et le comportement change la mani\\xE8re dont vous devez lire les erreurs. \",(0,e.jsx)(i.code,{children:\"tccutil\"}),\" valide l'\",(0,e.jsx)(i.strong,{children:\"identifiant de bundle avant le nom de service\"}),\". Donnez-lui un service bidon et un identifiant de bundle bidon ensemble :\"]}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"tccutil\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" reset\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ZZZNotAService\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" com.example.nonexistent.zzz\"})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"et il renvoie :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsx)(i.span,{className:\"line\",children:(0,e.jsx)(i.span,{children:`tccutil: No such bundle identifier \"com.example.nonexistent.zzz\": The operation couldn't be completed. (OSStatus error -10814.)`})})})})}),`\n`,(0,e.jsx)(i.p,{children:\"Il se plaint du bundle, et non du nom de service manifestement invalide. Donnez-lui un service bidon sans aucun identifiant de bundle :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"tccutil\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" reset\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ZZZNotAService\"})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"et il renvoie :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsx)(i.span,{className:\"line\",children:(0,e.jsx)(i.span,{children:\"tccutil: Failed to reset ZZZNotAService\"})})})})}),`\n`,(0,e.jsxs)(i.p,{children:[\"Cons\\xE9quence pratique : une faute de frappe dans l'identifiant de bundle vous donne toujours une erreur claire et pr\\xE9cise, ce qui est une bonne chose. Mais une faute de frappe dans le \",(0,e.jsx)(i.em,{children:\"nom de service\"}),\" peut \\xEAtre masqu\\xE9e lorsque l'identifiant de bundle est lui aussi erron\\xE9, car l'outil ne va jamais assez loin pour s'en plaindre. Si vous obtenez l'erreur \",(0,e.jsx)(i.code,{children:\"-10814\"}),\", corrigez d'abord l'identifiant de bundle, puis relancez la commande et voyez si le nom de service \\xE9tait lui aussi faux.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Le corollaire est le suivant : \",(0,e.jsx)(i.strong,{children:\"v\\xE9rifiez l'identifiant de bundle avant de construire la commande.\"})]}),`\n`,(0,e.jsx)(i.h3,{id:\"comment-trouver-lidentifiant-de-bundle-dune-application\",children:\"Comment trouver l'identifiant de bundle d'une application\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Deux m\\xE9thodes fiables. La premi\\xE8re a \\xE9t\\xE9 v\\xE9rifi\\xE9e sur le Mac de test, o\\xF9 \",(0,e.jsx)(i.code,{children:`osascript -e 'id of app \"Terminal\"'`}),\" a renvoy\\xE9 \",(0,e.jsx)(i.code,{children:\"com.apple.Terminal\"}),\" et \",(0,e.jsx)(i.code,{children:`osascript -e 'id of app \"Safari\"'`}),\" a renvoy\\xE9 \",(0,e.jsx)(i.code,{children:\"com.apple.Safari\"}),\" :\"]}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"osascript\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -e\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:` 'id of app \"AppName\"'`})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"Remplacez par le nom de l'application tel qu'il appara\\xEEt dans le Finder. C'est la m\\xE9thode la plus rapide, et c'est celle que les lecteurs de Howard Oakley ont fait remonter dans les commentaires de son panorama de la protection de la vie priv\\xE9e, ce qu'il a reconnu.\"}),`\n`,(0,e.jsx)(i.p,{children:\"La seconde m\\xE9thode lit directement le bundle, ce qui est utile quand l'application ne se trouve pas \\xE0 un emplacement standard ou qu'AppleScript n'arrive pas \\xE0 r\\xE9soudre le nom :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"defaults\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" read\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /Applications/AppName.app/Contents/Info.plist\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" CFBundleIdentifier\"})]})})})}),`\n`,(0,e.jsxs)(i.p,{children:[\"Ou utilisez la vue de signature de code, qui vous montre en m\\xEAme temps l'autorit\\xE9 de signature, et lisez sa ligne \",(0,e.jsx)(i.code,{children:\"Identifier=\"}),\" :\"]}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"codesign\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -dv\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" --verbose=2\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" /Applications/AppName.app\"})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"Utilisez celle que vous pr\\xE9f\\xE9rez, mais utilisez-en une. Ne devinez pas l'identifiant \\xE0 partir du nom de l'application. La nomenclature DNS invers\\xE9e est une convention, pas une r\\xE8gle, et bien des applications ont des identifiants qui ne ressemblent en rien \\xE0 ce que vous auriez devin\\xE9.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"les-noms-de-services-rel\\xE8vent-du-savoir-communautaire-pas-de-la-documentation-apple\",children:\"Les noms de services rel\\xE8vent du savoir communautaire, pas de la documentation Apple\"}),`\n`,(0,e.jsx)(i.p,{children:\"C'est ici que l'honn\\xEAtet\\xE9 compte plus que l'exhaustivit\\xE9.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsxs)(i.strong,{children:[\"Apple ne publie pas la liste des noms de services accept\\xE9s par \",(0,e.jsx)(i.code,{children:\"tccutil reset\"}),\".\"]}),\" La page \",(0,e.jsx)(i.code,{children:\"man\"}),\" en donne exactement deux \\xE0 titre d'exemple : \",(0,e.jsx)(i.code,{children:\"AddressBook\"}),\" et \",(0,e.jsx)(i.code,{children:\"All\"}),\". C'est l\\xE0 l'int\\xE9gralit\\xE9 de la documentation d'Apple sur le sujet.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Les noms qui circulent viennent de la communaut\\xE9. Howard Oakley a publi\\xE9 une liste dans son panorama de mars 2025 sur la protection de la vie priv\\xE9e, qui comprend entre autres :\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.code,{children:\"Accessibility\"}),\", \",(0,e.jsx)(i.code,{children:\"AddressBook\"}),\", \",(0,e.jsx)(i.code,{children:\"All\"}),\", \",(0,e.jsx)(i.code,{children:\"AppleEvents\"}),\", \",(0,e.jsx)(i.code,{children:\"AudioCapture\"}),\", \",(0,e.jsx)(i.code,{children:\"BluetoothAlways\"}),\", \",(0,e.jsx)(i.code,{children:\"Calendar\"}),\", \",(0,e.jsx)(i.code,{children:\"Camera\"}),\", \",(0,e.jsx)(i.code,{children:\"ContactsFull\"}),\", \",(0,e.jsx)(i.code,{children:\"ContactsLimited\"}),\", \",(0,e.jsx)(i.code,{children:\"DeveloperTool\"}),\", \",(0,e.jsx)(i.code,{children:\"FocusStatus\"}),\", \",(0,e.jsx)(i.code,{children:\"MediaLibrary\"}),\", \",(0,e.jsx)(i.code,{children:\"Microphone\"}),\", \",(0,e.jsx)(i.code,{children:\"Motion\"}),\", \",(0,e.jsx)(i.code,{children:\"Photos\"}),\", \",(0,e.jsx)(i.code,{children:\"PostEvent\"}),\", \",(0,e.jsx)(i.code,{children:\"Reminders\"}),\", \",(0,e.jsx)(i.code,{children:\"RemoteDesktop\"}),\", \",(0,e.jsx)(i.code,{children:\"ScreenCapture\"}),\", \",(0,e.jsx)(i.code,{children:\"SpeechRecognition\"}),\", \",(0,e.jsx)(i.code,{children:\"SystemPolicyAllFiles\"}),\", \",(0,e.jsx)(i.code,{children:\"SystemPolicyDesktopFolder\"}),\", \",(0,e.jsx)(i.code,{children:\"SystemPolicyDocumentsFolder\"}),\", \",(0,e.jsx)(i.code,{children:\"SystemPolicyDownloadsFolder\"}),\", \",(0,e.jsx)(i.code,{children:\"SystemPolicyNetworkVolumes\"}),\", \",(0,e.jsx)(i.code,{children:\"SystemPolicyRemovableVolumes\"}),\".\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Deux d'entre eux correspondent aux volets qui int\\xE9ressent le plus cet article : \",(0,e.jsx)(i.code,{children:\"ScreenCapture\"}),\" pour Screen & System Audio Recording, et \",(0,e.jsx)(i.code,{children:\"SystemPolicyAllFiles\"}),\" pour Full Disk Access.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Je n'ai d\\xE9lib\\xE9r\\xE9ment pas test\\xE9 ces noms par force brute sur le Mac de test. Un \",(0,e.jsx)(i.code,{children:\"tccutil reset\"}),\" qui \",(0,e.jsx)(i.em,{children:\"r\\xE9ussit\"}),\" efface les autorisations r\\xE9elles de la machine : la seule fa\\xE7on de confirmer qu'un nom fonctionne est donc de d\\xE9truire ce que vous cherchiez \\xE0 pr\\xE9server, et tester ceux qui \\xE9chouent ne vous apprend rien. La liste ci-dessus rel\\xE8ve d'un savoir communautaire bien sourc\\xE9 qui correspond \\xE0 ce que les praticiens utilisent sur le terrain. Ce n'est pas de la documentation Apple, et je pr\\xE9f\\xE8re le dire plut\\xF4t que de la pr\\xE9senter comme faisant autorit\\xE9.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Deux choses en d\\xE9coulent. Si un \",(0,e.jsx)(i.code,{children:\"tccutil reset\"}),\" semble ne rien faire, envisagez que le nom de service soit erron\\xE9 avant de conclure que le syst\\xE8me est cass\\xE9. Et pr\\xE9f\\xE9rez la voie System Settings quand vous le pouvez, car le volet, lui, n'a jamais de probl\\xE8me d'orthographe.\"]}),`\n`,(0,e.jsx)(i.h2,{id:\"binaires-en-ligne-de-commande-et-outils-assistants\",children:\"Binaires en ligne de commande et outils assistants\"}),`\n`,(0,e.jsx)(i.p,{children:\"C'est le domaine o\\xF9 le mod\\xE8le \\xAB une application, une entr\\xE9e dans une liste \\xBB s'effondre le plus durement, et o\\xF9 un bug bien document\\xE9 de macOS 26 a consid\\xE9rablement aggrav\\xE9 les choses pendant un temps.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"un-ex\\xE9cutable-simple-na-pas-didentifiant-de-bundle\",children:\"Un ex\\xE9cutable simple n'a pas d'identifiant de bundle\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Un \",(0,e.jsx)(i.code,{children:\".app\"}),\" est un bundle : un r\\xE9pertoire \\xE0 structure d\\xE9finie contenant un \",(0,e.jsx)(i.code,{children:\"Info.plist\"}),\" qui d\\xE9clare, entre autres, un \",(0,e.jsx)(i.code,{children:\"CFBundleIdentifier\"}),\". Un binaire compil\\xE9 pos\\xE9 dans \",(0,e.jsx)(i.code,{children:\"/usr/local/bin\"}),\" n'a rien de tout cela. Ce n'est qu'un ex\\xE9cutable Mach-O.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Le mod\\xE8le de TCC est b\\xE2ti autour des bundles. Un ex\\xE9cutable simple peut malgr\\xE9 tout recevoir une autorisation, mais il n'a aucun identifiant de bundle sur lequel s'indexer, ce qui explique qu'il puisse ne pas appara\\xEEtre dans le volet comme le ferait une application, et que \",(0,e.jsx)(i.code,{children:\"tccutil reset Service bundle.id\"}),\" n'ait rien \\xE0 viser pour lui.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"le-bug-daffichage-de-macos-261-et-ce-quil-a-appris-\\xE0-tout-le-monde\",children:\"Le bug d'affichage de macOS 26.1, et ce qu'il a appris \\xE0 tout le monde\"}),`\n`,(0,e.jsx)(i.p,{children:\"Fin 2025, un ensemble de fils de discussion sur les Apple Developer Forums a rapport\\xE9 la m\\xEAme chose pour diff\\xE9rentes autorisations. Cela m\\xE9rite d'\\xEAtre parcouru, car les ing\\xE9nieurs d'Apple eux-m\\xEAmes ont confirm\\xE9 le diagnostic et le d\\xE9nouement vous apprend quelque chose de durable sur la relation entre le volet et la base de donn\\xE9es.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Le fil 807898, \\xAB Issue: Plain Executables Do Not Appear Under 'Screen & System Audio Recording' on macOS 26.1 (Tahoe) \\xBB, rapportait qu'un ex\\xE9cutable simple demandant l'enregistrement d'\\xE9cran recevait bien l'invite habituelle, capturait bien l'\\xE9cran correctement une fois l'autorisation accord\\xE9e, mais n'apparaissait jamais dans la liste de System Settings. R\\xE9sum\\xE9 de l'auteur : \\xAB macOS 26.1 (Tahoe) semble exiger des bundles d'application pour qu'un \\xE9l\\xE9ment s'affiche dans l'interface de confidentialit\\xE9 Screen Recording. Les ex\\xE9cutables simples : demandent et re\\xE7oivent toujours l'autorisation, fonctionnent toujours correctement une fois l'autorisation accord\\xE9e, mais n'apparaissent pas dans la liste de System Settings. \\xBB Le m\\xEAme code empaquet\\xE9 en bundle \",(0,e.jsx)(i.code,{children:\".app\"}),\" apparaissait normalement. Quinn \\xAB The Eskimo! \\xBB, ing\\xE9nieur DTS chez Apple, a r\\xE9pondu en le confirmant : \\xAB \\xC0 mon avis, c'est un bug et je vous encourage \\xE0 le signaler comme tel. \\xBB\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Le fil 807323, \\xAB Background Unix executable not appearing in Screen Recording permissions UI (macOS Tahoe 26.1) \\xBB, rapportait le m\\xEAme sympt\\xF4me sous un autre angle. Un ex\\xE9cutable Unix d'arri\\xE8re-plan appelant \",(0,e.jsx)(i.code,{children:\"CGRequestScreenCaptureAccess()\"}),\" fonctionnait sur 26.0.1 et a cess\\xE9 d'appara\\xEEtre dans l'interface sur 26.1. L'auteur notait qu'ajouter manuellement l'ex\\xE9cutable avec le bouton \",(0,e.jsx)(i.code,{children:\"+\"}),\" \\xAB accorde l'autorisation en interne, mais l'ex\\xE9cutable n'appara\\xEEt toujours pas dans l'interface \\xBB, si bien que les utilisateurs \\xAB ne peuvent ni v\\xE9rifier ni r\\xE9voquer les autorisations \\xBB. Ce fil n'a re\\xE7u aucune r\\xE9ponse d'Apple, seulement la corroboration d'un autre d\\xE9veloppeur. Le fil 809549 a soulev\\xE9 le m\\xEAme probl\\xE8me pour Full Disk Access, en rapportant que les binaires en ligne de commande \\xAB n'apparaissent pas dans les r\\xE9glages FDA, m\\xEAme apr\\xE8s s\\xE9lection \\xBB ; Quinn l'a redirig\\xE9 vers le fil consolid\\xE9 existant et un mod\\xE9rateur l'a verrouill\\xE9.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"C'est dans ce fil consolid\\xE9, le 806187, que se trouve la r\\xE9solution. La conclusion cl\\xE9 : les autorisations \\xE9taient correctement enregistr\\xE9es depuis le d\\xE9but. La base de donn\\xE9es avait raison ; la liste avait tort. Comme l'a formul\\xE9 un participant, \\xAB les applications CLI peuvent disposer de Full Disk Access ou d'autres autorisations, mais vous ne pouvez pas le voir dans la liste \\xBB. Une fonctionnalit\\xE9 de \\xAB Background Security Improvements \\xBB ajout\\xE9e en 26.1 avait modifi\\xE9 l'interface des r\\xE9glages pour n'afficher que les applications empaquet\\xE9es.\"}),`\n`,(0,e.jsx)(i.p,{children:`Le contournement provisoire consistait \\xE0 \\xAB faire glisser le binaire depuis le Finder vers la liste Full Disk Access dans la fen\\xEAtre System Settings. L'autorisation sera accord\\xE9e, mais elle n'appara\\xEEtra pas dans la liste. \\xBB La recommandation durable est venue de Kevin Elliott, un autre ing\\xE9nieur DTS : \\xAB La meilleure solution consiste \\xE0 int\\xE9grer cet outil dans un bundle d'application. Je ne veux pas dire \"faites en sorte que votre outil en ligne de commande se comporte comme une application\", je veux dire \"prenez votre outil en ligne de commande et placez-le dans un bundle d'application, puis utilisez-le exactement comme vous le faisiez avant\". \\xBB`}),`\n`,(0,e.jsx)(i.p,{children:\"Plusieurs participants ont confirm\\xE9 que le bug d'affichage \\xE9tait corrig\\xE9 dans la b\\xEAta de macOS 26.3, et quelqu'un sur le fil 807898 a rapport\\xE9 qu'une variante du probl\\xE8me touchant Accessibility, pr\\xE9sente en 26.1 et dans la b\\xEAta 26.2, \\xE9tait elle aussi r\\xE9solue en 26.3.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi cela vous concerne m\\xEAme si vous avez d\\xE9pass\\xE9 26.1 :\"}),\" le volet est une vue de la base de donn\\xE9es, et une vue peut mentir. Si une application ou un outil dispose manifestement d'une autorisation mais n'appara\\xEEt pas dans la liste, ne supposez pas que l'autorisation manque. Testez le comportement avant de commencer \\xE0 r\\xE9initialiser des choses.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"pourquoi-une-application-lanc\\xE9e-depuis-le-terminal-h\\xE9rite-des-autorisations-du-terminal\",children:\"Pourquoi une application lanc\\xE9e depuis le Terminal h\\xE9rite des autorisations du Terminal\"}),`\n`,(0,e.jsx)(i.p,{children:\"Cela fait constamment tr\\xE9bucher les d\\xE9veloppeurs, et une fois la r\\xE8gle connue, le myst\\xE8re dispara\\xEEt.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"TCC ne se contente pas de demander \\xAB quel binaire \\xE9met cette requ\\xEAte ? \\xBB Il parcourt ce que Howard Oakley d\\xE9crit comme \\xAB une cha\\xEEne d'attribution qui remonte la cha\\xEEne d'appels jusqu'\\xE0 une application responsable des r\\xE9glages de confidentialit\\xE9 \\xE0 appliquer \\xBB. Le syst\\xE8me cherche le processus \",(0,e.jsx)(i.em,{children:\"responsable\"}),\", qui est g\\xE9n\\xE9ralement l'application lanc\\xE9e par l'utilisateur, et non le processus le plus profond de la cha\\xEEne.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Ainsi, lorsque vous ex\\xE9cutez un programme depuis le Terminal, c'est typiquement Terminal qui est le processus responsable. La demande de capture d'\\xE9cran de votre programme devient la demande de capture d'\\xE9cran de Terminal. Si Terminal d\\xE9tient l'autorisation, votre programme fonctionne ; sinon, l'invite nomme Terminal plut\\xF4t que votre programme. C'est exactement ce qu'a observ\\xE9 l'auteur du fil 807898 : lorsqu'il est lanc\\xE9 depuis une autre application telle que VS Code ou Terminal, \\xAB c'est l'application parente qui appara\\xEEt dans la liste, et non l'ex\\xE9cutable lui-m\\xEAme \\xBB.\"}),`\n`,(0,e.jsx)(i.p,{children:\"Trois cons\\xE9quences au quotidien. Accorder une autorisation \\xE0 votre \\xE9mulateur de terminal signifie que chaque outil que vous y ex\\xE9cutez h\\xE9rite de cette attribution, ce qui est pratique mais constitue aussi une v\\xE9ritable extension de privil\\xE8ges, \\xE0 laquelle il vaut mieux r\\xE9fl\\xE9chir avant de le faire \\xE0 la l\\xE9g\\xE8re. Le m\\xEAme script se comporte diff\\xE9remment selon qu'il est lanc\\xE9 depuis Terminal, depuis un LaunchAgent ou depuis un wrapper applicatif ouvert par double-clic, parce que le processus responsable diff\\xE8re \\xE0 chaque fois. Et changer d'\\xE9mulateur de terminal, c'est repartir de z\\xE9ro, puisque iTerm2, Ghostty, Warp, Kitty et Terminal.app constituent chacun une identit\\xE9 distincte.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"outils-assistants-services-xpc-et-\\xE9l\\xE9ments-de-connexion\",children:\"Outils assistants, services XPC et \\xE9l\\xE9ments de connexion\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Une application Mac moderne, c'est fr\\xE9quemment plusieurs ex\\xE9cutables : l'application principale, \\xE9ventuellement un assistant privil\\xE9gi\\xE9 sous \",(0,e.jsx)(i.code,{children:\"/Library/PrivilegedHelperTools\"}),\", \\xE9ventuellement des services XPC embarqu\\xE9s dans le bundle, \\xE9ventuellement un agent de lancement qui d\\xE9marre \\xE0 l'ouverture de session.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Les services XPC embarqu\\xE9s dans un bundle correctement sign\\xE9 op\\xE8rent g\\xE9n\\xE9ralement sous l'attribution de l'application parente, car la cha\\xEEne se r\\xE9sout jusqu'\\xE0 l'application. Les assistants et d\\xE9mons de lancement install\\xE9s s\\xE9par\\xE9ment, tr\\xE8s souvent non : ils s'ex\\xE9cutent en dehors de l'arborescence de processus de l'application, avec leur propre identit\\xE9, et n\\xE9cessitent leur propre attribution. C'est pour cela que certaines applications vous demandent d'approuver une autorisation deux fois, une fois pour l'application et une fois pour son assistant, et pour cela qu'un assistant install\\xE9 en tant que root peut n\\xE9cessiter une entr\\xE9e dans la base de donn\\xE9es \",(0,e.jsx)(i.em,{children:\"syst\\xE8me\"}),\" plut\\xF4t que dans votre base par utilisateur.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Si une application ne fonctionne qu'\\xE0 moiti\\xE9, avec une interface qui r\\xE9pond mais une fonction d'arri\\xE8re-plan qui \\xE9choue silencieusement, un assistant d\\xE9pourvu d'autorisation est un suspect s\\xE9rieux. La documentation d'assistance de l'application elle-m\\xEAme est le chemin le plus rapide pour savoir quel assistant a besoin de quoi, car vous ne pouvez pas le d\\xE9terminer depuis le volet.\"}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.img,{alt:\"Sch\\xE9ma de la cha\\xEEne d'attribution TCC montrant un outil en ligne de commande lanc\\xE9 depuis un \\xE9mulateur de terminal et se r\\xE9solvant vers l'application parente\",src:\"/images/blog/mac-screen-recording-full-disk-access-permission-keeps-asking-fix-2026/content-2.webp\",width:\"1024\",height:\"541\"})}),`\n`,(0,e.jsx)(i.h2,{id:\"le-cas-particulier-de-lenregistrement-d\\xE9cran\",children:\"Le cas particulier de l'enregistrement d'\\xE9cran\"}),`\n`,(0,e.jsx)(i.p,{children:\"Le volet est System Settings \\u2192 Privacy & Security \\u2192 Screen & System Audio Recording. Description d'Apple, mot pour mot : \\xAB Autorisez des apps \\xE0 enregistrer votre \\xE9cran et votre audio, ou seulement votre audio. Les apps list\\xE9es y ont acc\\xE8s. \\xBB\"}),`\n`,(0,e.jsx)(i.p,{children:\"Points sp\\xE9cifiques \\xE0 cette autorisation :\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"C'est la seule autorisation soumise \\xE0 une redemande programm\\xE9e.\"}),\" Aucune autre cat\\xE9gorie TCC ne redemande selon un minuteur. Si votre autorisation de cam\\xE9ra ou votre Full Disk Access vous sollicite tous les mois, ce n'est pas le comportement pr\\xE9vu et vous avez un d\\xE9faut.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"La basculer exige g\\xE9n\\xE9ralement de red\\xE9marrer l'application.\"}),\" Beaucoup d'applications lisent la capacit\\xE9 de capture une seule fois au lancement. Activez l'interrupteur pendant que l'application tourne et elle risque de ne rien remarquer avant d'\\xEAtre relanc\\xE9e. Cela explique \\xE0 lui seul une bonne part des rapports du type \\xAB je l'ai activ\\xE9e et il ne s'est rien pass\\xE9 \\xBB.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"L'audio syst\\xE8me et l'\\xE9cran sont regroup\\xE9s mais pas identiques.\"}),\" Le volet couvre les deux. Certaines applications ne demandent que l'audio. Si une application capture bien votre \\xE9cran mais enregistre le silence, v\\xE9rifiez si elle a seulement demand\\xE9 la capture de l'audio syst\\xE8me, et contr\\xF4lez les r\\xE9glages de p\\xE9riph\\xE9rique audio de l'application, car un p\\xE9riph\\xE9rique audio virtuel manquant est un probl\\xE8me compl\\xE8tement distinct d'un probl\\xE8me TCC. Le \",(0,e.jsx)(i.a,{href:\"/blog/how-to-screen-record-on-mac-complete-guide-2026\",children:\"guide complet de l'enregistrement d'\\xE9cran sur Mac\"}),\" d\\xE9taille le versant audio.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Un cas concret difficile, rapport\\xE9 honn\\xEAtement.\"}),\" Un fil Microsoft Q&A documente Teams pour Mac sous macOS Tahoe 26.4, build 25E246, tournant en boucle sur l'invite d'autorisation de partage d'\\xE9cran. L'administrateur \\xE0 l'origine du signalement a v\\xE9rifi\\xE9 tout ce qu'il est humainement possible de v\\xE9rifier : un profil PPPC d\\xE9ploy\\xE9 par MDM ciblant \",(0,e.jsx)(i.code,{children:\"com.microsoft.teams2\"}),\" avec une exigence de code correcte, l'enregistrement TCC de niveau syst\\xE8me affichant \",(0,e.jsx)(i.code,{children:\"auth_value=2\"}),\" pour \",(0,e.jsx)(i.code,{children:\"kTCCServiceScreenCapture\"}),\", l'enregistrement de niveau utilisateur affichant la m\\xEAme chose, et System Settings montrant Teams activ\\xE9 avec la mention indiquant que le r\\xE9glage avait \\xE9t\\xE9 configur\\xE9 par un profil. Il avait vid\\xE9 les caches, supprim\\xE9 l'identifiant h\\xE9rit\\xE9 \",(0,e.jsx)(i.code,{children:\"com.microsoft.teams\"}),\", r\\xE9install\\xE9 via MDM, tu\\xE9 et relanc\\xE9 les processus, et red\\xE9marr\\xE9.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Les r\\xE9ponses propos\\xE9es relevaient de la rem\\xE9diation standard : \\xAB quittez compl\\xE8tement Teams, supprimez puis rajoutez ou rebasculez l'entr\\xE9e Teams dans Screen Recording, puis red\\xE9marrez Teams et retentez le partage afin que macOS puisse redemander et relier \\xE0 nouveau l'autorisation \\xBB, et, \\xE0 d\\xE9faut, faire remonter le probl\\xE8me \\xE0 l'assistance Microsoft avec les journaux du client. Trois semaines plus tard, l'auteur indiquait qu'aucune solution fonctionnelle ne lui avait \\xE9t\\xE9 fournie et qu'il utilisait l'application web \\xE0 la place. Il arrive que l'autorisation soit r\\xE9ellement accord\\xE9e \\xE0 toutes les couches et que le fautif soit un bug c\\xF4t\\xE9 application. Savoir quand s'arr\\xEAter fait partie du m\\xE9tier.\"}),`\n`,(0,e.jsx)(i.h2,{id:\"le-cas-particulier-de-full-disk-access\",children:\"Le cas particulier de Full Disk Access\"}),`\n`,(0,e.jsx)(i.p,{children:\"Full Disk Access est l'autorisation la plus large du syst\\xE8me. C'est celle dont ont besoin les outils de sauvegarde, les utilitaires de migration, les logiciels de s\\xE9curit\\xE9 et les \\xE9mulateurs de terminal utilis\\xE9s pour l'administration.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Ce n'est pas la m\\xEAme chose que les entr\\xE9es Files and Folders.\"}),\" Files and Folders accorde un dossier pr\\xE9cis. Full Disk Access accorde l'acc\\xE8s aux donn\\xE9es prot\\xE9g\\xE9es de toute la machine : Mail, Messages, les donn\\xE9es de navigation de Safari, les sauvegardes Time Machine et les r\\xE9pertoires de conteneur des autres applications. Une application disposant de Full Disk Access n'a besoin de rien dans Files and Folders.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Elle exige presque toujours un red\\xE9marrage de l'application.\"}),\" Plus que toute autre autorisation, Full Disk Access tend \\xE0 \\xEAtre \\xE9valu\\xE9e au d\\xE9marrage du processus. Accordez-la, puis quittez et relancez l'application. Beaucoup d'applications affichent une bo\\xEEte de dialogue vous demandant pr\\xE9cis\\xE9ment cela ; croyez-les.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Elle ne peut pas \\xEAtre demand\\xE9e par une invite.\"}),\" Une application ne peut pas afficher une bo\\xEEte de dialogue qui accorderait Full Disk Access en cas d'approbation ; elle peut seulement vous renvoyer vers le volet. C'est pour cela que les applications qui en ont besoin affichent des instructions plut\\xF4t qu'une bo\\xEEte de dialogue syst\\xE8me, et pour cela que \\xAB j'ai cliqu\\xE9 sur Allow et \\xE7a ne marche toujours pas \\xBB est un rapport fr\\xE9quent : il n'y avait aucun Allow \\xE0 cliquer.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pour un \\xE9mulateur de terminal, l'attribution est large.\"}),\" Donner Full Disk Access \\xE0 Terminal ou \\xE0 iTerm2 signifie que chaque commande que vous y ex\\xE9cutez dispose de cette port\\xE9e, via la cha\\xEEne d'attribution d\\xE9crite plus haut. C'est souvent exactement ce que veut un administrateur. Comprenez simplement ce que vous faites.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Les outils en ligne de commande ont \\xE9t\\xE9 touch\\xE9s par le bug d'affichage de 26.1\"}),\" d\\xE9crit plus haut, le correctif \\xE9tant arriv\\xE9 dans la b\\xEAta 26.3. Si vous \\xEAtes en 26.1 ou 26.2 et qu'un outil CLI refuse d'appara\\xEEtre dans la liste apr\\xE8s l'y avoir ajout\\xE9, c'est le bug connu et il est fort possible que l'outil dispose malgr\\xE9 tout de l'autorisation. Testez le comportement plut\\xF4t que de faire confiance \\xE0 la liste.\"]}),`\n`,(0,e.jsx)(i.h2,{id:\"le-cas-particulier-daccessibility-et-dautomation\",children:\"Le cas particulier d'Accessibility et d'Automation\"}),`\n`,(0,e.jsx)(i.p,{children:\"Ces deux volets sont regroup\\xE9s parce qu'ils produisent une confusion de m\\xEAme nature.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Accessibility\"}),\" accorde \\xE0 une application la capacit\\xE9 de contr\\xF4ler votre Mac. Les gestionnaires de fen\\xEAtres, les expanseurs de texte, les gestionnaires de presse-papiers, les remappeurs de clavier, les outils d'automatisation et les logiciels d'assistance \\xE0 distance en ont tous besoin, et macOS la traite comme l'autorisation puissante qu'elle est.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Son comportement distinctif : beaucoup d'applications n\\xE9cessitent de quitter compl\\xE8tement puis de relancer, et certaines exigent que l'interrupteur soit d\\xE9sactiv\\xE9 puis r\\xE9activ\\xE9, pour que le changement soit pris en compte. Si une application d\\xE9pendante d'Accessibility cesse de fonctionner apr\\xE8s une mise \\xE0 jour, examinez d'abord les cas d'identit\\xE9 de signature de code vus plus haut. Accessibility faisait aussi partie des volets touch\\xE9s par le bug d'affichage de macOS 26.1, un message du fil 807898 indiquant que la variante Accessibility \\xAB a maintenant \\xE9t\\xE9 corrig\\xE9e dans la b\\xEAta 26.3 \\xBB.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Automation\"}),\" est structurellement diff\\xE9rent de tous les autres volets. Ce n'est pas une liste d'applications mais une liste de \",(0,e.jsx)(i.em,{children:\"paires\"}),\" : \\xAB l'application A souhaite contr\\xF4ler l'application B \\xBB, chaque paire constituant une d\\xE9cision distincte. Si votre script contr\\xF4le trois applications, vous avez trois d\\xE9cisions et trois entr\\xE9es.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Deux choses en d\\xE9coulent. Une autorisation Automation cass\\xE9e signifie souvent qu'une paire parmi plusieurs manque, et le volet est le seul endroit o\\xF9 vous pouvez voir laquelle. Et r\\xE9initialiser Automation avec \",(0,e.jsx)(i.code,{children:\"tccutil reset AppleEvents com.example.controller\"}),\" efface d'un coup toutes les paires de ce contr\\xF4leur : vous r\\xE9approuverez donc chaque cible la prochaine fois que votre script y touchera. C'est souvent la sortie la plus rapide d'un \\xE9tat Automation bloqu\\xE9, mais pr\\xE9parez-vous \\xE0 la s\\xE9rie d'invites.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Un pi\\xE8ge qui m\\xE9rite d'\\xEAtre nomm\\xE9 : lancez un AppleScript depuis le Terminal et l'attribution enregistr\\xE9e sera \\xAB Terminal contr\\xF4lant l'application cible \\xBB, et non \\xAB votre script la contr\\xF4lant \\xBB. D\\xE9placez le script vers un autre \\xE9mulateur de terminal, ou empaquetez-le dans une application, et vous devrez l'approuver \\xE0 nouveau. C'est la cha\\xEEne d'attribution fonctionnant comme pr\\xE9vu, ce qui ne la rend pas moins surprenante la premi\\xE8re fois.\"}),`\n`,(0,e.jsx)(i.h2,{id:\"la-s\\xE9quence-de-r\\xE9attribution-propre\",children:\"La s\\xE9quence de r\\xE9attribution propre\"}),`\n`,(0,e.jsx)(i.p,{children:\"Lorsque vous avez identifi\\xE9 un v\\xE9ritable d\\xE9faut, voici la s\\xE9quence. Suivez-la dans l'ordre. Chaque \\xE9tape existe pour une raison, et en sauter une est la fa\\xE7on dont les gens concluent que tout l'exercice ne fonctionne pas.\"}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"1. Quittez compl\\xE8tement l'application.\"})}),`\n`,(0,e.jsx)(i.p,{children:\"Pas seulement fermer sa fen\\xEAtre. Quittez-la avec Cmd-Q, puis v\\xE9rifiez qu'il ne reste rien :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"pgrep\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -fl\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"AppName\"'})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"S'il reste des processus, ils retiennent l'ancien \\xE9tat d'autorisation et tout ce que vous ferez ensuite sera \\xE9valu\\xE9 au regard d'une d\\xE9cision obsol\\xE8te encore en m\\xE9moire.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi :\"}),\" un processus en cours d'ex\\xE9cution met en cache son \\xE9tat d'autorisation. R\\xE9initialiser la base de donn\\xE9es sous un processus vivant produit un comportement incoh\\xE9rent qui vous enverra \\xE0 la poursuite d'un fant\\xF4me.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"2. V\\xE9rifiez qu'il existe exactement une copie de l'application sur le disque.\"})}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"mdfind\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:` \"kMDItemKind == 'Application'\"`}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -name\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:' \"AppName\"'})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"Supprimez toute copie que vous n'utilisez pas.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi :\"}),\" si deux copies existent, vous risquez de r\\xE9accorder l'autorisation \\xE0 la mauvaise et de vous retrouver exactement au point de d\\xE9part. C'est l'\\xE9tape que les gens sautent, et la raison pour laquelle la s\\xE9quence \\xE9choue chez eux.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"3. Confirmez l'identifiant de bundle.\"})}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"osascript\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -e\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:` 'id of app \"AppName\"'`})]})})})}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi :\"}),\" un identifiant erron\\xE9 vous donne au mieux l'erreur \",(0,e.jsx)(i.code,{children:\"-10814\"}),\", et au pire vous incite \\xE0 retirer compl\\xE8tement l'identifiant de la commande reset, ce qui est la voie destructrice.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"4. Supprimez l'entr\\xE9e de l'application dans le volet.\"})}),`\n`,(0,e.jsxs)(i.p,{children:[\"Ouvrez System Settings \\u2192 Privacy & Security \\u2192 le volet concern\\xE9, s\\xE9lectionnez l'application, cliquez sur \",(0,e.jsx)(i.code,{children:\"-\"}),\". Si une authentification administrateur vous est demand\\xE9e, fournissez-la.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi :\"}),\" cela supprime la d\\xE9cision obsol\\xE8te via l'interface prise en charge. Ce n'est pas la m\\xEAme chose que de d\\xE9sactiver l'interrupteur, ce qui enregistre un \",(0,e.jsx)(i.em,{children:\"refus\"}),\" plut\\xF4t que de supprimer la d\\xE9cision. Un refus signifie que l'application ne sera plus autoris\\xE9e \\xE0 vous solliciter.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"5. R\\xE9initialisez le service pour cet identifiant de bundle.\"})}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"tccutil\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" reset\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" ScreenCapture\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" com.example.appname\"})]})})})}),`\n`,(0,e.jsxs)(i.p,{children:[\"Remplacez par le nom de service et l'identifiant corrects. \",(0,e.jsx)(i.code,{children:\"SystemPolicyAllFiles\"}),\" pour Full Disk Access, \",(0,e.jsx)(i.code,{children:\"Accessibility\"}),\" pour Accessibility, \",(0,e.jsx)(i.code,{children:\"AppleEvents\"}),\" pour Automation.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi :\"}),\" le volet et la base de donn\\xE9es peuvent diverger, comme le bug de 26.1 l'a d\\xE9montr\\xE9 de mani\\xE8re concluante. Faire \\xE0 la fois la suppression dans l'interface et la r\\xE9initialisation vous couvre quelle que soit celle que le syst\\xE8me consulte r\\xE9ellement. \",(0,e.jsx)(i.strong,{children:\"L'identifiant de bundle n'est pas facultatif ici.\"})]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"6. Relancez l'application.\"})}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi :\"}),\" un processus neuf, sans d\\xE9cision en cache et sans r\\xE9sidu de l'ex\\xE9cution pr\\xE9c\\xE9dente.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"7. D\\xE9clenchez l'action qui n\\xE9cessite l'autorisation.\"})}),`\n`,(0,e.jsx)(i.p,{children:\"Lancez un partage d'\\xE9cran. Ouvrez le dossier. Envoyez l'Apple event. Ne retournez pas dans System Settings pour pr\\xE9activer l'interrupteur.\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi :\"}),\" l'invite est le m\\xE9canisme qui lie l'identit\\xE9 de signature actuelle \\xE0 la d\\xE9cision. Cette liaison est tout l'objet de l'exercice. Pr\\xE9activer un interrupteur dans le volet \\xE9crit parfois une d\\xE9cision qui n'est pas correctement li\\xE9e, ce qui explique les rapports d'un interrupteur activ\\xE9 et d'une application qui ne fonctionne pas.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"8. Approuvez \\xE0 l'invite.\"})}),`\n`,(0,e.jsx)(i.p,{children:\"Cliquez sur Allow, ou sur Open System Settings et activez-la l\\xE0 si l'application rel\\xE8ve d'une des cat\\xE9gories qui ne peuvent pas solliciter directement, comme Full Disk Access.\"}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsx)(i.strong,{children:\"9. Quittez et relancez l'application une fois de plus.\"})}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Pourquoi :\"}),\" beaucoup d'applications ne lisent leur jeu de capacit\\xE9s qu'au lancement. Cette \\xE9tape convertit \\xAB accord\\xE9e \\xBB en \\xAB r\\xE9ellement utilisable \\xBB et \\xE9limine le faux n\\xE9gatif le plus courant de toute la proc\\xE9dure.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Si l'application \\xE9choue encore apr\\xE8s l'\\xE9tape neuf, le probl\\xE8me n'est pas l'autorisation. Passez \\xE0 la section suivante.\"}),`\n`,(0,e.jsx)(i.h2,{id:\"quand-rien-ne-fonctionne\",children:\"Quand rien ne fonctionne\"}),`\n`,(0,e.jsx)(i.h3,{id:\"testez-avec-un-compte-utilisateur-neuf\",children:\"Testez avec un compte utilisateur neuf\"}),`\n`,(0,e.jsx)(i.p,{children:\"Cr\\xE9ez un nouveau compte administrateur dans System Settings \\u2192 Users & Groups, connectez-vous dessus, installez ou lancez l'application, et accordez-y l'autorisation.\"}),`\n`,(0,e.jsx)(i.p,{children:\"Ce seul test d\\xE9coupe proprement l'espace du probl\\xE8me :\"}),`\n`,(0,e.jsxs)(i.ul,{children:[`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"\\xC7a fonctionne dans le nouveau compte :\"}),\" le d\\xE9faut se situe dans l'\\xE9tat de votre compte utilisateur, tr\\xE8s probablement la base TCC par utilisateur, une pr\\xE9f\\xE9rence obsol\\xE8te ou un \\xE9l\\xE9ment d'ouverture de session qui interf\\xE8re. L'application et le syst\\xE8me vont bien.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"\\xC7a \\xE9choue aussi dans le nouveau compte :\"}),\" le d\\xE9faut est \\xE0 l'\\xE9chelle du syst\\xE8me ou dans l'application elle-m\\xEAme. Votre compte n'est pas en cause, et une bonne partie des conseils du type \\xAB supprimez vos pr\\xE9f\\xE9rences \\xBB que vous vous appr\\xEAtiez \\xE0 essayer vous auraient g\\xE2ch\\xE9 la soir\\xE9e.\"]}),`\n`]}),`\n`,(0,e.jsx)(i.p,{children:\"Cela prend cinq minutes et vaut plus qu'une heure de suppositions.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"quand-une-r\\xE9installation-compl\\xE8te-est-vraiment-la-r\\xE9ponse\",children:\"Quand une r\\xE9installation compl\\xE8te est vraiment la r\\xE9ponse\"}),`\n`,(0,e.jsx)(i.p,{children:\"R\\xE9installer est la r\\xE9ponse r\\xE9flexe \\xE0 tout, et elle est g\\xE9n\\xE9ralement mauvaise. Elle est r\\xE9ellement pertinente dans trois situations :\"}),`\n`,(0,e.jsxs)(i.ol,{children:[`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsxs)(i.strong,{children:[(0,e.jsx)(i.code,{children:\"codesign --verify\"}),\" signale que le bundle est endommag\\xE9.\"]}),\" La signature ne se valide pas ; rien en aval ne peut \\xEAtre r\\xE9par\\xE9. R\\xE9installez depuis le t\\xE9l\\xE9chargement d'origine du d\\xE9veloppeur, pas depuis une sauvegarde, car la sauvegarde peut \\xEAtre la source du dommage.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"L'application a \\xE9t\\xE9 install\\xE9e depuis une source qui l'a modifi\\xE9e.\"}),\" Les installateurs reconditionn\\xE9s, les outils qui patchent des bundles d'application et certains m\\xE9canismes de d\\xE9ploiement en entreprise laissent un bundle dont la signature ne correspond plus \\xE0 celle du d\\xE9veloppeur. R\\xE9cup\\xE9rez une copie propre aupr\\xE8s du d\\xE9veloppeur.\"]}),`\n`,(0,e.jsxs)(i.li,{children:[(0,e.jsx)(i.strong,{children:\"La documentation d'assistance de l'application le pr\\xE9conise\"}),\" pour le sympt\\xF4me pr\\xE9cis que vous rencontrez. Certaines applications ont des probl\\xE8mes connus d'\\xE9tat d'autorisation, avec des proc\\xE9dures de r\\xE9installation document\\xE9es, y compris des \\xE9tapes pour effacer leurs propres r\\xE9pertoires d'\\xE9tat.\"]}),`\n`]}),`\n`,(0,e.jsx)(i.p,{children:\"En dehors de ces trois cas, une r\\xE9installation reproduit g\\xE9n\\xE9ralement le bundle que vous aviez d\\xE9j\\xE0, et si l'identit\\xE9 de signature est inchang\\xE9e, la situation des autorisations le sera tout autant.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"red\\xE9marrez-mais-pour-la-bonne-raison\",children:\"Red\\xE9marrez, mais pour la bonne raison\"}),`\n`,(0,e.jsx)(i.p,{children:\"Un red\\xE9marrage efface l'\\xE9tat des processus, recharge les d\\xE9mons de lancement et r\\xE9initialise les caches en m\\xE9moire. Il corrige r\\xE9ellement une classe d'\\xE9tats d'autorisation bloqu\\xE9s, en particulier ceux impliquant des assistants d'arri\\xE8re-plan qui ne se rechargent pas proprement. Il ne corrige pas une incoh\\xE9rence de signature de code, une copie en double sur le disque, un bundle endommag\\xE9 ni un bug applicatif. Red\\xE9marrez une fois, t\\xF4t, puis revenez au diagnostic.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"ce-quil-ne-faut-pas-faire\",children:\"Ce qu'il ne faut pas faire\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Pour \\xEAtre explicite, car ces conseils apparaissent constamment dans les r\\xE9sultats de recherche : ne d\\xE9sactivez pas SIP, ce qui supprime des protections sur tout le syst\\xE8me pour contourner une bo\\xEEte de dialogue. Ne modifiez pas et ne supprimez pas TCC.db, ce que vous ne pouvez pas faire avec SIP activ\\xE9 et ne devriez pas vouloir faire avec SIP d\\xE9sactiv\\xE9. Ne faites pas de \",(0,e.jsx)(i.code,{children:\"chmod -R\"}),\" sur votre dossier personnel, ce qui ne touche pas \\xE0 ce sous-syst\\xE8me et peut casser votre dossier Library. Et n'ex\\xE9cutez pas \",(0,e.jsx)(i.code,{children:\"tccutil reset All\"}),\" sans identifiant de bundle, sauf si vous voulez passer le reste de la journ\\xE9e \\xE0 cliquer sur Allow.\"]}),`\n`,(0,e.jsx)(i.h2,{id:\"les-mac-g\\xE9r\\xE9s\",children:\"Les Mac g\\xE9r\\xE9s\"}),`\n`,(0,e.jsx)(i.p,{children:\"Si votre Mac est administr\\xE9 par un employeur ou un \\xE9tablissement scolaire, les r\\xE8gles changent, et il vaut la peine de savoir si c'est votre cas avant de passer une heure \\xE0 vous battre contre un interrupteur que vous n'alliez de toute fa\\xE7on jamais gagner.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"comment-savoir-si-votre-mac-est-g\\xE9r\\xE9\",children:\"Comment savoir si votre Mac est g\\xE9r\\xE9\"}),`\n`,(0,e.jsx)(i.p,{children:\"Trois v\\xE9rifications. Premi\\xE8rement, regardez System Settings \\u2192 General \\u2192 Device Management. Si un profil est install\\xE9, il y figure. Deuxi\\xE8mement, cherchez la mention dans le volet de confidentialit\\xE9 lui-m\\xEAme : une entr\\xE9e g\\xE9r\\xE9e affiche un texte indiquant que le r\\xE9glage a \\xE9t\\xE9 configur\\xE9 par un profil, et son interrupteur est g\\xE9n\\xE9ralement gris\\xE9. Troisi\\xE8mement, depuis le Terminal :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,e.jsx)(i.code,{children:(0,e.jsxs)(i.span,{className:\"line\",children:[(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"profiles\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" status\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -type\"}),(0,e.jsx)(i.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" enrollment\"})]})})})}),`\n`,(0,e.jsx)(i.p,{children:\"Sur le Mac de test non g\\xE9r\\xE9, cela a renvoy\\xE9 :\"}),`\n`,(0,e.jsx)(e.Fragment,{children:(0,e.jsx)(i.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,e.jsxs)(i.code,{children:[(0,e.jsx)(i.span,{className:\"line\",children:(0,e.jsx)(i.span,{children:\"Enrolled via DEP: No\"})}),`\n`,(0,e.jsx)(i.span,{className:\"line\",children:(0,e.jsx)(i.span,{children:\"MDM enrollment: No\"})})]})})}),`\n`,(0,e.jsx)(i.p,{children:\"Un Mac g\\xE9r\\xE9 signale ici une inscription \\xE0 la place.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"ce-quun-profil-peut-et-ne-peut-pas-faire\",children:\"Ce qu'un profil peut et ne peut pas faire\"}),`\n`,(0,e.jsx)(i.p,{children:\"Le MDM accorde des autorisations via une charge utile Privacy Preferences Policy Control, g\\xE9n\\xE9ralement appel\\xE9e profil PPPC. Elle \\xE9crit directement des d\\xE9cisions dans la base TCC du syst\\xE8me, ce qui explique qu'un Mac g\\xE9r\\xE9 puisse disposer d'autorisations apparues sans que personne n'ait cliqu\\xE9 sur quoi que ce soit.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Il y a des limites, et la capture d'\\xE9cran en fait partie. Kandji, un \\xE9diteur MDM dont l'analyse des \\xE9volutions de PPPC est largement cit\\xE9e parmi les administrateurs Mac, d\\xE9crit le m\\xE9canisme : pour la capture d'\\xE9cran et la surveillance des entr\\xE9es, \\xAB l'informatique peut utiliser le MDM pour pr\\xE9autoriser certaines applications \\xE0 \\xEAtre approuv\\xE9es m\\xEAme par des utilisateurs standard, afin d'activer la capture d'\\xE9cran ou la surveillance des entr\\xE9es \\xBB. Cela utilise une valeur d'autorisation qui d\\xE9l\\xE8gue l'approbation \\xE0 l'utilisateur plut\\xF4t que de l'accorder silencieusement. Un profil peut donc \",(0,e.jsx)(i.em,{children:\"refuser\"}),\" purement et simplement la capture d'\\xE9cran et peut permettre \\xE0 un utilisateur standard de l'approuver, mais le comportement document\\xE9 est qu'il ne l'accorde pas silencieusement comme il peut le faire pour Full Disk Access ou Accessibility.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[\"Tenez cette nuance avec pr\\xE9caution, car le cas Microsoft Q&A \\xE9voqu\\xE9 plus haut impliquait un administrateur signalant un enregistrement TCC de niveau syst\\xE8me pour \",(0,e.jsx)(i.code,{children:\"kTCCServiceScreenCapture\"}),\" avec un motif d'autorisation indiquant une politique MDM. Ces deux r\\xE9cits ne s'accordent pas parfaitement, et je les rapporte tous les deux plut\\xF4t que de choisir le plus commode.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"si-vous-utilisez-un-mac-g\\xE9r\\xE9\",children:\"Si vous utilisez un Mac g\\xE9r\\xE9\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"N'essayez pas de contourner un interrupteur gris\\xE9. Vous n'y parviendrez pas, et sur de nombreux d\\xE9ploiements la tentative est journalis\\xE9e. Un \",(0,e.jsx)(i.code,{children:\"tccutil reset\"}),\" sur une entr\\xE9e g\\xE9r\\xE9e par profil \\xE9chouera ou sera r\\xE9appliqu\\xE9 au prochain enregistrement aupr\\xE8s du serveur de gestion. Contactez la personne qui administre votre parc ; le correctif est une modification de profil de son c\\xF4t\\xE9 et prend une minute.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"si-vous-administrez-un-mac-g\\xE9r\\xE9\",children:\"Si vous administrez un Mac g\\xE9r\\xE9\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Faites correspondre l'exigence de code de la charge utile PPPC \\xE0 ce que \",(0,e.jsx)(i.code,{children:\"codesign\"}),\" rapporte r\\xE9ellement pour la version d\\xE9ploy\\xE9e de l'application. Le cas Teams \\xE9voqu\\xE9 plus haut est instructif pr\\xE9cis\\xE9ment parce que l'administrateur l'avait v\\xE9rifi\\xE9 et s'est quand m\\xEAme heurt\\xE9 \\xE0 un mur : un profil correct est n\\xE9cessaire mais pas toujours suffisant. Lorsqu'une application change d'identifiant de bundle d'une version \\xE0 l'autre, comme l'a fait Teams, retirez l'identifiant h\\xE9rit\\xE9 du profil plut\\xF4t que de laisser les deux en place.\"]}),`\n`,(0,e.jsx)(i.h2,{id:\"r\\xE9solution-des-probl\\xE8mes-courants\",children:\"R\\xE9solution des probl\\xE8mes courants\"}),`\n`,(0,e.jsx)(i.h3,{id:\"lapplication-est-list\\xE9e-et-activ\\xE9e-mais-ne-peut-toujours-pas-enregistrer\",children:\"L'application est list\\xE9e et activ\\xE9e mais ne peut toujours pas enregistrer\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Problem:\"}),\" Le volet montre l'application activ\\xE9e. L'application se comporte comme si elle n'avait aucune autorisation.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution:\"}),\" L'entr\\xE9e est li\\xE9e \\xE0 une identit\\xE9 de signature qui ne correspond plus \\xE0 l'application pr\\xE9sente sur le disque. Ex\\xE9cutez d'abord \",(0,e.jsx)(i.code,{children:`mdfind \"kMDItemKind == 'Application'\" -name \"AppName\"`}),\" pour v\\xE9rifier la pr\\xE9sence d'une deuxi\\xE8me copie, la cause la plus fr\\xE9quente, et supprimez les exemplaires en trop. Puis d\\xE9roulez toute la s\\xE9quence de r\\xE9attribution propre, en incluant \\xE0 la fois la suppression dans le volet et le \",(0,e.jsx)(i.code,{children:\"tccutil reset\"}),\" avec l'identifiant de bundle. Ne vous contentez pas de d\\xE9sactiver puis r\\xE9activer l'interrupteur ; cela enregistre un refus suivi d'une approbation non li\\xE9e, ce qui est pr\\xE9cis\\xE9ment la fa\\xE7on dont vous en \\xEAtes arriv\\xE9 l\\xE0.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"lapplication-a-disparu-de-la-liste-apr\\xE8s-une-mise-\\xE0-jour\",children:\"L'application a disparu de la liste apr\\xE8s une mise \\xE0 jour\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Problem:\"}),\" Une application qui figurait dans le volet hier n'y est plus aujourd'hui, et la seule chose qui a chang\\xE9, c'est une mise \\xE0 jour.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution:\"}),\" La nouvelle compilation a \\xE9t\\xE9 sign\\xE9e diff\\xE9remment, macOS voit donc une nouvelle application sans historique. Il n'y a rien \\xE0 r\\xE9parer : lancez l'application, d\\xE9clenchez l'action prot\\xE9g\\xE9e, approuvez la nouvelle invite. Si l'application utilise Full Disk Access, qui ne peut pas solliciter, ajoutez-la avec le bouton \",(0,e.jsx)(i.code,{children:\"+\"}),\". Si cela se reproduit \\xE0 chaque mise \\xE0 jour, la configuration de signature du d\\xE9veloppeur est instable et m\\xE9rite de lui \\xEAtre signal\\xE9e.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"chaque-lancement-produit-une-invite-pas-une-fois-par-mois\",children:\"Chaque lancement produit une invite, pas une fois par mois\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Problem:\"}),\" La bo\\xEEte de dialogue de capture d'\\xE9cran appara\\xEEt chaque fois que vous ouvrez l'application, plut\\xF4t qu'au rythme attendu.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution:\"}),\" C'est un d\\xE9faut, pas la redemande pr\\xE9vue par conception. Les causes probables sont une application sign\\xE9e ad hoc dont le hachage de code change \\xE0 chaque compilation, un auto-actualiseur qui remplace son bundle de fa\\xE7on r\\xE9p\\xE9t\\xE9e, ou un chemin de lancement qui diff\\xE8re \\xE0 chaque fois. Ex\\xE9cutez \",(0,e.jsx)(i.code,{children:\"codesign -dv --verbose=2\"}),\" sur l'application et regardez la ligne \",(0,e.jsx)(i.code,{children:\"TeamIdentifier\"}),\". Si elle indique \",(0,e.jsx)(i.code,{children:\"not set\"}),\" sur une application tierce, cette application n'est pas sign\\xE9e avec un Developer ID et une autorisation stable est hors d'atteinte tant que le d\\xE9veloppeur n'aura pas corrig\\xE9 sa signature.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"deux-entr\\xE9es-portant-le-m\\xEAme-nom-dapplication\",children:\"Deux entr\\xE9es portant le m\\xEAme nom d'application\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Problem:\"}),\" Le volet affiche deux fois la m\\xEAme application, parfois avec des ic\\xF4nes identiques.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution:\"}),\" Deux copies existent sur le disque, avec des identit\\xE9s de signature diff\\xE9rentes ou des chemins diff\\xE9rents. Trouvez-les toutes avec \",(0,e.jsx)(i.code,{children:'find /Applications ~/Applications ~/Downloads ~/Desktop -maxdepth 3 -name \"AppName.app\" 2>/dev/null'}),\". Gardez-en une, supprimez les autres, retirez les deux entr\\xE9es du volet, puis r\\xE9accordez l'autorisation \\xE0 la survivante. Si vous conservez d\\xE9lib\\xE9r\\xE9ment un canal b\\xEAta aux c\\xF4t\\xE9s d'une version stable, attendez-vous \\xE0 deux entr\\xE9es et acceptez-les.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"un-outil-en-ligne-de-commande-nappara\\xEEt-pas-dans-la-liste\",children:\"Un outil en ligne de commande n'appara\\xEEt pas dans la liste\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Problem:\"}),\" Vous ajoutez un binaire avec le bouton \",(0,e.jsx)(i.code,{children:\"+\"}),\" et il n'appara\\xEEt pas.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution:\"}),\" Sur macOS 26.1 et 26.2, il s'agit du bug d'affichage confirm\\xE9 d\\xE9crit plus haut, reconnu par les ing\\xE9nieurs DTS d'Apple et signal\\xE9 comme corrig\\xE9 dans la b\\xEAta 26.3. L'autorisation est tr\\xE8s probablement enregistr\\xE9e m\\xEAme si la liste ne l'affiche pas : testez donc le comportement r\\xE9el avant de pousser le diagnostic plus loin. Sur toute version, les ex\\xE9cutables simples n'ont pas d'identifiant de bundle et n'ont jamais \\xE9t\\xE9 des citoyens de premi\\xE8re classe dans cette interface. La r\\xE9ponse durable, selon les mots de Kevin Elliott dans le fil 806187, consiste \\xE0 placer l'outil dans un bundle d'application et \\xE0 continuer de l'utiliser exactement comme avant.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"linvite-nomme-la-mauvaise-application\",children:\"L'invite nomme la mauvaise application\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Problem:\"}),\" Vous lancez un script et la bo\\xEEte de dialogue d'autorisation nomme Terminal, ou VS Code, ou Script Editor, plut\\xF4t que votre script.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution:\"}),\" C'est la cha\\xEEne d'attribution fonctionnant correctement. Le processus responsable est l'application que vous avez lanc\\xE9e, et l'autorisation s'y rattache. Soit vous accordez l'autorisation \\xE0 cette application h\\xF4te en acceptant que tout ce que vous y ex\\xE9cutez h\\xE9rite de cette attribution, soit vous empaquetez votre outil dans son propre bundle d'application afin qu'il devienne le processus responsable. Sachez que changer d'\\xE9mulateur de terminal implique d'accorder \\xE0 nouveau l'autorisation, car chacun constitue une identit\\xE9 distincte.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"linterrupteur-est-gris\\xE9\",children:\"L'interrupteur est gris\\xE9\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Problem:\"}),\" Vous ne pouvez pas modifier l'interrupteur, et une mention relative \\xE0 un profil peut appara\\xEEtre.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution:\"}),\" La d\\xE9cision est fix\\xE9e par un profil de configuration. Confirmez-le avec \",(0,e.jsx)(i.code,{children:\"profiles status -type enrollment\"}),\" et v\\xE9rifiez System Settings \\u2192 General \\u2192 Device Management. Sur un Mac g\\xE9r\\xE9, contactez votre administrateur ; le changement doit se faire dans le profil. Sur un Mac personnel affichant un profil inattendu, examinez ce qui y est install\\xE9, car un profil que vous n'avez pas sciemment install\\xE9 m\\xE9rite un examen attentif.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"lautorisation-fonctionne-puis-cesse-apr\\xE8s-une-mise-en-veille-ou-une-longue-session\",children:\"L'autorisation fonctionne, puis cesse apr\\xE8s une mise en veille ou une longue session\"}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Problem:\"}),\" Le partage d'\\xE9cran fonctionne en d\\xE9but de journ\\xE9e et \\xE9choue apr\\xE8s que le Mac a \\xE9t\\xE9 en veille.\"]}),`\n`,(0,e.jsxs)(i.p,{children:[(0,e.jsx)(i.strong,{children:\"Solution:\"}),\" V\\xE9rifiez d'abord si ce que vous constatez n'est pas la bo\\xEEte de dialogue de reconfirmation p\\xE9riodique apparue derri\\xE8re une autre fen\\xEAtre, car une invite que vous n'avez jamais vue ressemble exactement \\xE0 un \\xE9chec silencieux. Ramenez toutes les fen\\xEAtres au premier plan et regardez. S'il n'y a pas d'invite, quittez compl\\xE8tement l'application, v\\xE9rifiez avec \",(0,e.jsx)(i.code,{children:'pgrep -fl \"AppName\"'}),\", et relancez-la, car un processus assistant qui n'a pas r\\xE9ussi \\xE0 se recharger apr\\xE8s le r\\xE9veil est le coupable habituel. Red\\xE9marrez le Mac une fois si le probl\\xE8me persiste. Si cela se reproduit quotidiennement, l'application a un bug de gestion du r\\xE9veil et cela m\\xE9rite un signalement \\xE0 son d\\xE9veloppeur.\"]}),`\n`,(0,e.jsx)(i.h2,{id:\"faq\",children:\"FAQ\"}),`\n`,(0,e.jsx)(i.h3,{id:\"puis-je-d\\xE9sactiver-linvite-p\\xE9riodique-denregistrement-d\\xE9cran-\",children:\"Puis-je d\\xE9sactiver l'invite p\\xE9riodique d'enregistrement d'\\xE9cran ?\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Non. Apple ne fournit aucun r\\xE9glage c\\xF4t\\xE9 utilisateur pour la d\\xE9sactiver, et il n'existe aucune commande prise en charge qui la supprime. Le seul m\\xE9canisme qui l'\\xE9limine est le droit d'acc\\xE8s \",(0,e.jsx)(i.code,{children:\"com.apple.developer.persistent-content-capture\"}),\", une capacit\\xE9 g\\xE9r\\xE9e que les d\\xE9veloppeurs doivent demander \\xE0 Apple, destin\\xE9e aux applications de contr\\xF4le \\xE0 distance. Ce n'est pas quelque chose qu'un utilisateur peut activer.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"\\xE0-quelle-fr\\xE9quence-macos-redemande-t-il-lautorisation-denregistrement-d\\xE9cran-\",children:\"\\xC0 quelle fr\\xE9quence macOS redemande-t-il l'autorisation d'enregistrement d'\\xE9cran ?\"}),`\n`,(0,e.jsx)(i.p,{children:\"Apple n'a jamais document\\xE9 l'intervalle. Le comportement a d\\xE9but\\xE9 pendant le cycle Sequoia sur une base hebdomadaire, et Apple l'a fait passer \\xE0 une base mensuelle au cours de cette b\\xEAta apr\\xE8s les critiques, comme l'ont rapport\\xE9 MacRumors et 9to5Mac en ao\\xFBt 2024. La page d'assistance actuelle d'Apple ne mentionne pas du tout la redemande, et je n'ai pas pu v\\xE9rifier la cadence de macOS 26 aupr\\xE8s d'une source faisant autorit\\xE9.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"r\\xE9initialiser-les-autorisations-va-t-il-supprimer-mes-donn\\xE9es-\",children:\"R\\xE9initialiser les autorisations va-t-il supprimer mes donn\\xE9es ?\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"Non. \",(0,e.jsx)(i.code,{children:\"tccutil reset\"}),\" supprime des d\\xE9cisions de consentement enregistr\\xE9es, rien d'autre. Aucun fichier, r\\xE9glage ni donn\\xE9e d'application n'est touch\\xE9. Le co\\xFBt, c'est le d\\xE9rangement : chaque application concern\\xE9e redemandera l'autorisation la prochaine fois qu'elle en aura besoin. Ce co\\xFBt est proportionnel \\xE0 l'ampleur de votre r\\xE9initialisation, ce qui est exactement pourquoi vous devriez toujours inclure un identifiant de bundle.\"]}),`\n`,(0,e.jsx)(i.h3,{id:\"pourquoi-mon-application-fonctionne-t-elle-dans-le-terminal-mais-pas-toute-seule-\",children:\"Pourquoi mon application fonctionne-t-elle dans le Terminal mais pas toute seule ?\"}),`\n`,(0,e.jsx)(i.p,{children:\"Parce que TCC attribue la requ\\xEAte au processus responsable, qui, pour un programme lanc\\xE9 depuis le Terminal, est g\\xE9n\\xE9ralement Terminal lui-m\\xEAme. Votre programme emprunte l'autorisation de Terminal. Seul, il n'a aucune autorisation et, s'il s'agit d'un ex\\xE9cutable simple plut\\xF4t que d'un bundle d'application, il risque m\\xEAme de ne pas appara\\xEEtre dans le volet pour pouvoir en recevoir une.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"est-il-dangereux-daccorder-full-disk-access-\",children:\"Est-il dangereux d'accorder Full Disk Access ?\"}),`\n`,(0,e.jsx)(i.p,{children:\"C'est l'autorisation la plus large que propose macOS, couvrant Mail, Messages, les donn\\xE9es de Safari, les sauvegardes Time Machine et les conteneurs des autres applications. Ne l'accordez qu'\\xE0 des logiciels auxquels vous confieriez tout cela, et notez que l'accorder \\xE0 un \\xE9mulateur de terminal \\xE9tend cette port\\xE9e \\xE0 chaque commande que vous y ex\\xE9cutez.\"}),`\n`,(0,e.jsx)(i.h3,{id:\"dois-je-red\\xE9marrer-mon-mac-apr\\xE8s-avoir-modifi\\xE9-une-autorisation-\",children:\"Dois-je red\\xE9marrer mon Mac apr\\xE8s avoir modifi\\xE9 une autorisation ?\"}),`\n`,(0,e.jsx)(i.p,{children:\"En g\\xE9n\\xE9ral non. Quitter et relancer l'application concern\\xE9e suffit presque toujours, et c'est une \\xE9tape obligatoire car beaucoup d'applications ne lisent leurs capacit\\xE9s qu'au lancement. Un red\\xE9marrage complet aide dans le cas plus restreint d'un assistant d'arri\\xE8re-plan ou d'un d\\xE9mon de lancement qui ne se recharge pas proprement. Red\\xE9marrez une fois, puis revenez au diagnostic.\"}),`\n`,(0,e.jsx)(i.h2,{id:\"conclusion\",children:\"Conclusion\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"L'essentiel de la frustration dans ce domaine vient du fait de traiter une seule \\xE9tiquette, \\xAB les permissions \\xBB, comme une seule chose. Il y en a au moins trois : les permissions de fichiers POSIX, r\\xE9gies par \",(0,e.jsx)(i.code,{children:\"chmod\"}),\" et qui n'ont rien \\xE0 voir avec tout cela ; les d\\xE9cisions de confidentialit\\xE9 TCC, li\\xE9es \\xE0 l'identit\\xE9 de signature de code d'une application et stock\\xE9es dans des bases de donn\\xE9es que vous ne pouvez pas lire ; et, sur les Mac g\\xE9r\\xE9s, la politique \\xE9crite par profil qui prime sur ce que vous pouvez modifier localement.\"]}),`\n`,(0,e.jsx)(i.p,{children:\"Une fois ces \\xE9l\\xE9ments s\\xE9par\\xE9s, l'arbre de d\\xE9cision est court. Une invite de capture d'\\xE9cran qui arrive selon un calendrier est d\\xE9lib\\xE9r\\xE9e, elle n'a aucun interrupteur d'arr\\xEAt, et la bonne r\\xE9ponse est de cliquer sur Allow et de reprendre votre journ\\xE9e. Tout le reste est un d\\xE9faut, et les d\\xE9fauts ont des causes : une deuxi\\xE8me copie de l'application sur le disque, une signature qui a chang\\xE9 lors d'une mise \\xE0 jour, un bundle qui ne se v\\xE9rifie plus, un assistant qui a besoin de sa propre autorisation, ou une cha\\xEEne d'attribution qui pointe vers votre \\xE9mulateur de terminal plut\\xF4t que vers votre script.\"}),`\n`,(0,e.jsxs)(i.p,{children:[\"L'outillage est v\\xE9ritablement mince. \",(0,e.jsx)(i.code,{children:\"tccutil\"}),\" n'a qu'un verbe, Apple ne publie pas les noms de services qu'il accepte, et le volet est une vue de la base de donn\\xE9es dont on a d\\xE9montr\\xE9 qu'elle pouvait se tromper, comme l'a montr\\xE9 le bug d'affichage de macOS 26.1 lorsque les ing\\xE9nieurs d'Apple eux-m\\xEAmes ont confirm\\xE9 que les autorisations \\xE9taient correctement enregistr\\xE9es alors que la liste refusait de les afficher. Composez avec cela : v\\xE9rifiez l'identifiant de bundle avant de construire une commande, ajoutez-le syst\\xE9matiquement \\xE0 \",(0,e.jsx)(i.code,{children:\"reset\"}),\", suivez la s\\xE9quence de r\\xE9attribution propre dans l'ordre, et testez avec un compte utilisateur neuf quand vous \\xEAtes bloqu\\xE9. Et sachez quand vous arr\\xEAter. Lorsque vous avez v\\xE9rifi\\xE9 l'attribution, v\\xE9rifi\\xE9 la signature, \\xE9limin\\xE9 les doublons et test\\xE9 dans un compte vierge, comme l'a fait l'auteur du signalement Teams sous macOS Tahoe 26.4, le probl\\xE8me qui reste n'est pas le v\\xF4tre \\xE0 r\\xE9soudre. Signalez-le et utilisez un contournement en attendant.\"]}),`\n`,(0,e.jsx)(i.p,{children:(0,e.jsxs)(i.em,{children:[\"Lecture compl\\xE9mentaire : \",(0,e.jsx)(i.a,{href:\"/blog/mac-microphone-not-working-macos-tahoe-26-5-input-permissions-fix-2026\",children:\"Microphone du Mac qui ne fonctionne pas sous macOS Tahoe 26.5\"}),\" \\xB7 \",(0,e.jsx)(i.a,{href:\"/blog/macos-tahoe-security-privacy-complete-guide-2025\",children:\"S\\xE9curit\\xE9 et confidentialit\\xE9 sur macOS Tahoe : le guide complet\"})]})})]})}function d(n={}){let{wrapper:i}=n.components||{};return i?(0,e.jsx)(i,{...n,children:(0,e.jsx)(c,{...n})}):c(n)}return k(C);})();\n;return Component;","toc":[{"title":"Points clés","url":"#points-clés","depth":2},{"title":"Ce qu'est TCC et ce qu'il n'est pas","url":"#ce-quest-tcc-et-ce-quil-nest-pas","depth":2},{"title":"La base de données de confidentialité n'est pas le système de fichiers","url":"#la-base-de-données-de-confidentialité-nest-pas-le-système-de-fichiers","depth":3},{"title":"Les bases de données que vous ne pouvez pas lire, ni même lister","url":"#les-bases-de-données-que-vous-ne-pouvez-pas-lire-ni-même-lister","depth":3},{"title":"Pourquoi cette conception existe","url":"#pourquoi-cette-conception-existe","depth":3},{"title":"Les deux problèmes distincts","url":"#les-deux-problèmes-distincts","depth":2},{"title":"Problème un : la redemande délibérée","url":"#problème-un--la-redemande-délibérée","depth":3},{"title":"Problème deux : l'autorisation qui ne tient pas","url":"#problème-deux--lautorisation-qui-ne-tient-pas","depth":3},{"title":"Quel problème avez-vous","url":"#quel-problème-avez-vous","depth":3},{"title":"Où se trouve chaque autorisation dans la génération macOS 26","url":"#où-se-trouve-chaque-autorisation-dans-la-génération-macos-26","depth":2},{"title":"Pourquoi une autorisation accordée cesse de fonctionner","url":"#pourquoi-une-autorisation-accordée-cesse-de-fonctionner","depth":2},{"title":"TCC se lie à l'identité de signature de code, pas à un chemin ni à un nom","url":"#tcc-se-lie-à-lidentité-de-signature-de-code-pas-à-un-chemin-ni-à-un-nom","depth":3},{"title":"Cas un : l'application a été mise à jour et signée différemment","url":"#cas-un--lapplication-a-été-mise-à-jour-et-signée-différemment","depth":3},{"title":"Cas deux : deux copies de la même application sur le disque","url":"#cas-deux--deux-copies-de-la-même-application-sur-le-disque","depth":3},{"title":"Cas trois : l'application a été déplacée après l'attribution","url":"#cas-trois--lapplication-a-été-déplacée-après-lattribution","depth":3},{"title":"Cas quatre : une mise à jour incomplète a invalidé la signature","url":"#cas-quatre--une-mise-à-jour-incomplète-a-invalidé-la-signature","depth":3},{"title":"Cas cinq : les auto-actualiseurs à la Sparkle qui remplacent leur propre bundle","url":"#cas-cinq--les-auto-actualiseurs-à-la-sparkle-qui-remplacent-leur-propre-bundle","depth":3},{"title":"Le diagnostic général","url":"#le-diagnostic-général","depth":3},{"title":"Les outils du Terminal : ce que tccutil peut et ne peut pas faire","url":"#les-outils-du-terminal--ce-que-tccutil-peut-et-ne-peut-pas-faire","depth":2},{"title":"reset est la seule commande","url":"#reset-est-la-seule-commande","depth":3},{"title":"L'avertissement sur l'identifiant de bundle qui compte le plus","url":"#lavertissement-sur-lidentifiant-de-bundle-qui-compte-le-plus","depth":3},{"title":"L'ordre de validation des arguments, et pourquoi il peut masquer une faute de frappe","url":"#lordre-de-validation-des-arguments-et-pourquoi-il-peut-masquer-une-faute-de-frappe","depth":3},{"title":"Comment trouver l'identifiant de bundle d'une application","url":"#comment-trouver-lidentifiant-de-bundle-dune-application","depth":3},{"title":"Les noms de services relèvent du savoir communautaire, pas de la documentation Apple","url":"#les-noms-de-services-relèvent-du-savoir-communautaire-pas-de-la-documentation-apple","depth":3},{"title":"Binaires en ligne de commande et outils assistants","url":"#binaires-en-ligne-de-commande-et-outils-assistants","depth":2},{"title":"Un exécutable simple n'a pas d'identifiant de bundle","url":"#un-exécutable-simple-na-pas-didentifiant-de-bundle","depth":3},{"title":"Le bug d'affichage de macOS 26.1, et ce qu'il a appris à tout le monde","url":"#le-bug-daffichage-de-macos-261-et-ce-quil-a-appris-à-tout-le-monde","depth":3},{"title":"Pourquoi une application lancée depuis le Terminal hérite des autorisations du Terminal","url":"#pourquoi-une-application-lancée-depuis-le-terminal-hérite-des-autorisations-du-terminal","depth":3},{"title":"Outils assistants, services XPC et éléments de connexion","url":"#outils-assistants-services-xpc-et-éléments-de-connexion","depth":3},{"title":"Le cas particulier de l'enregistrement d'écran","url":"#le-cas-particulier-de-lenregistrement-décran","depth":2},{"title":"Le cas particulier de Full Disk Access","url":"#le-cas-particulier-de-full-disk-access","depth":2},{"title":"Le cas particulier d'Accessibility et d'Automation","url":"#le-cas-particulier-daccessibility-et-dautomation","depth":2},{"title":"La séquence de réattribution propre","url":"#la-séquence-de-réattribution-propre","depth":2},{"title":"Quand rien ne fonctionne","url":"#quand-rien-ne-fonctionne","depth":2},{"title":"Testez avec un compte utilisateur neuf","url":"#testez-avec-un-compte-utilisateur-neuf","depth":3},{"title":"Quand une réinstallation complète est vraiment la réponse","url":"#quand-une-réinstallation-complète-est-vraiment-la-réponse","depth":3},{"title":"Redémarrez, mais pour la bonne raison","url":"#redémarrez-mais-pour-la-bonne-raison","depth":3},{"title":"Ce qu'il ne faut pas faire","url":"#ce-quil-ne-faut-pas-faire","depth":3},{"title":"Les Mac gérés","url":"#les-mac-gérés","depth":2},{"title":"Comment savoir si votre Mac est géré","url":"#comment-savoir-si-votre-mac-est-géré","depth":3},{"title":"Ce qu'un profil peut et ne peut pas faire","url":"#ce-quun-profil-peut-et-ne-peut-pas-faire","depth":3},{"title":"Si vous utilisez un Mac géré","url":"#si-vous-utilisez-un-mac-géré","depth":3},{"title":"Si vous administrez un Mac géré","url":"#si-vous-administrez-un-mac-géré","depth":3},{"title":"Résolution des problèmes courants","url":"#résolution-des-problèmes-courants","depth":2},{"title":"L'application est listée et activée mais ne peut toujours pas enregistrer","url":"#lapplication-est-listée-et-activée-mais-ne-peut-toujours-pas-enregistrer","depth":3},{"title":"L'application a disparu de la liste après une mise à jour","url":"#lapplication-a-disparu-de-la-liste-après-une-mise-à-jour","depth":3},{"title":"Chaque lancement produit une invite, pas une fois par mois","url":"#chaque-lancement-produit-une-invite-pas-une-fois-par-mois","depth":3},{"title":"Deux entrées portant le même nom d'application","url":"#deux-entrées-portant-le-même-nom-dapplication","depth":3},{"title":"Un outil en ligne de commande n'apparaît pas dans la liste","url":"#un-outil-en-ligne-de-commande-napparaît-pas-dans-la-liste","depth":3},{"title":"L'invite nomme la mauvaise application","url":"#linvite-nomme-la-mauvaise-application","depth":3},{"title":"L'interrupteur est grisé","url":"#linterrupteur-est-grisé","depth":3},{"title":"L'autorisation fonctionne, puis cesse après une mise en veille ou une longue session","url":"#lautorisation-fonctionne-puis-cesse-après-une-mise-en-veille-ou-une-longue-session","depth":3},{"title":"FAQ","url":"#faq","depth":2},{"title":"Puis-je désactiver l'invite périodique d'enregistrement d'écran ?","url":"#puis-je-désactiver-linvite-périodique-denregistrement-décran-","depth":3},{"title":"À quelle fréquence macOS redemande-t-il l'autorisation d'enregistrement d'écran ?","url":"#à-quelle-fréquence-macos-redemande-t-il-lautorisation-denregistrement-décran-","depth":3},{"title":"Réinitialiser les autorisations va-t-il supprimer mes données ?","url":"#réinitialiser-les-autorisations-va-t-il-supprimer-mes-données-","depth":3},{"title":"Pourquoi mon application fonctionne-t-elle dans le Terminal mais pas toute seule ?","url":"#pourquoi-mon-application-fonctionne-t-elle-dans-le-terminal-mais-pas-toute-seule-","depth":3},{"title":"Est-il dangereux d'accorder Full Disk Access ?","url":"#est-il-dangereux-daccorder-full-disk-access-","depth":3},{"title":"Dois-je redémarrer mon Mac après avoir modifié une autorisation ?","url":"#dois-je-redémarrer-mon-mac-après-avoir-modifié-une-autorisation-","depth":3},{"title":"Conclusion","url":"#conclusion","depth":2}],"estimatedTime":56}