{"id":51549,"date":"2026-04-10T15:40:43","date_gmt":"2026-04-10T19:40:43","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=51549"},"modified":"2026-04-27T11:48:11","modified_gmt":"2026-04-27T15:48:11","slug":"privacy-t-show-intent-based-access","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2026\/04\/10\/privacy-t-show-intent-based-access\/","title":{"rendered":"Privacy &#038; Security Settings Don&rsquo;t Show Intent-Based Access"},"content":{"rendered":"<p><a href=\"https:\/\/eclecticlight.co\/2026\/04\/10\/why-you-cant-trust-privacy-security\/\">Howard Oakley<\/a> (<a href=\"https:\/\/news.ycombinator.com\/item?id=47719602\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/eclecticlight.co\/2026\/04\/10\/why-you-cant-trust-privacy-security\/\">\n<p>Thus, access to a protected folder by user intent, such as through the Open and Save Panel, changes the sandboxing applied to the caller by removing its constraint to that specific protected folder. As the sandboxing isn&rsquo;t controlled by or reflected in Privacy &amp; Security settings, that allows TCC, in Files &amp; Folders, to continue showing access restrictions that aren&rsquo;t applied because the sandbox isn&rsquo;t applied.<\/p>\n<p>[&#8230;]<\/p>\n<p>It&rsquo;s possible for an app to have unrestricted access to one or more protected folders while its listing in Files &amp; Folders shows it being blocked from access, or for it to have no entry at all in that list.<\/p>\n<p>[&#8230;]<\/p>\n<p>Most concerning is the apparent permanence of the access granted, requiring an arcane command in Terminal and a restart in order to reset the app&rsquo;s privacy settings.<\/p>\n<\/blockquote>\n\n<p>I was aware that access could be granted in this way, but I think I assumed that it only lasted until the app quit. Oakley says that it actually persists until you run <code>tccutil reset All<\/code> <em>and restart<\/em>. (I guess the specific TCC identifier is undocumented; clearly it&rsquo;s not <code>SystemPolicyDocumentsFolder<\/code>.)<\/p>\n\n<p>I generally have the opposite problem, with access <em>not<\/em> lasting as long as expected:<\/p>\n\n<ul>\n<li>I keep getting prompts to allow the same apps to access my <tt>Documents<\/tt> folder. I&rsquo;m not resetting anything, but TCC seems to keep forgetting that I&rsquo;ve granted access.<\/li>\n<li>Sandboxed apps try to save access to certain folders using security-scoped bookmarks, which keep breaking and needing to be refreshed.<\/li>\n<\/ul>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/07\/31\/sploitlight\/\">Sploitlight<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/10\/21\/tcc-and-gatekeeper-bypasses\/\">TCC and Gatekeeper Bypasses<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/02\/19\/reporting-a-full-disk-access-bug-to-apple\/\">Reporting a Full Disk Access Bug to Apple<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/12\/18\/persistent-file-access-via-com-apple-macl-xattr\/\">Persistent File Access via com.apple.macl Xattr<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2023\/02\/09\/resetting-tcc\/\">Resetting TCC<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/09\/22\/terminal-and-full-disk-access\/\">Terminal and Full Disk Access<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/12\/07\/tcc-doesnt-prevent-protected-folders-from-being-listed\/\">Sandbox Doesn&rsquo;t Protect Files From stat()<\/a><\/li>\n<\/ul>\n\n<p id=\"privacy-t-show-intent-based-access-update-2026-04-16\">Update (<a href=\"#privacy-t-show-intent-based-access-update-2026-04-16\">2026-04-16<\/a>): <a href=\"https:\/\/eclecticlight.co\/2026\/04\/15\/privacy-which-folders-are-protected-in-tahoe\/\">Howard Oakley<\/a>:<\/p>\n<blockquote cite=\"https:\/\/eclecticlight.co\/2026\/04\/15\/privacy-which-folders-are-protected-in-tahoe\/\">\n<p>Obtaining a definitive list of locations that are subject to privacy protection in macOS Tahoe 26.4 hasn&rsquo;t been easy, and I&rsquo;ve previously relied on information given piecemeal in WWDC sessions. This article reports the results of formal testing using a new version of my test app Insent, and brings some surprises.<\/p>\n<\/blockquote>\n\n<p id=\"privacy-t-show-intent-based-access-update-2026-04-27\">Update (<a href=\"#privacy-t-show-intent-based-access-update-2026-04-27\">2026-04-27<\/a>): <a href=\"https:\/\/eclecticlight.co\/2026\/04\/20\/privacy-how-locations-are-protected\/\">Howard Oakley<\/a>:<\/p>\n<blockquote cite=\"https:\/\/eclecticlight.co\/2026\/04\/20\/privacy-how-locations-are-protected\/\">\n<p>Even using a known and simple app like Insent, behaviours aren&rsquo;t always consistent, and are susceptible to order effects and maybe even cosmic rays! There are also subtle differences between protected locations that can make generalisation unreliable. However, after extensive checks with Insent the following table gives an overview of protected locations in macOS 26.4.<\/p>\n<p>The three common local folders ~\/Desktop, ~\/Documents and ~\/Downloads are most consistent, with controlled read access, GUI controls in Files &amp; Folders, and can be overridden by intent using MACL xattrs. Network volumes also appear to protect write access.<\/p>\n<p>External volumes that are mounted automatically during startup don&rsquo;t appear to count as being removable, but any that are mounted later have similar protection for both read and write, and can be overridden by intent using MACLs.<\/p>\n<p>iCloud Drive and third-party cloud storage using the FileProvider API are more difficult to investigate, as I&rsquo;ve still been unable to find any GUI control. It also doesn&rsquo;t appear to be overridden by intent using MACLs, although its directories can still have com.apple.macl xattrs attached to them.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Howard Oakley (Hacker News): Thus, access to a protected folder by user intent, such as through the Open and Save Panel, changes the sandboxing applied to the caller by removing its constraint to that specific protected folder. As the sandboxing isn&rsquo;t controlled by or reflected in Privacy &amp; Security settings, that allows TCC, in Files [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2026-04-10T19:40:47Z","apple_news_api_id":"135ef52f-7457-43df-bd83-fd74eb6d4b8f","apple_news_api_modified_at":"2026-04-27T15:48:15Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAg==","apple_news_api_share_url":"https:\/\/apple.news\/AE171L3RXQ9-9g_10621Ljw","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[1902,30,2742,355,48,2669,1181,1960],"class_list":["post-51549","post","type-post","status-publish","format-standard","hentry","category-technology","tag-extended-attributes","tag-mac","tag-macos-tahoe-26","tag-privacy","tag-security","tag-security-scoped-bookmarks","tag-system-preferences","tag-transparency-consent-and-control-tcc"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/51549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=51549"}],"version-history":[{"count":4,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/51549\/revisions"}],"predecessor-version":[{"id":51725,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/51549\/revisions\/51725"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=51549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=51549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=51549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}