<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Gatekeeper on Margrop Blog</title>
		<link>https://blog.margrop.net/en/tag/gatekeeper/</link>
		<description>Recent content in Gatekeeper on Margrop Blog</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
		
			<lastBuildDate>Mon, 01 Jun 2026 07:35:00 +0800</lastBuildDate>
		
			<atom:link href="https://blog.margrop.net/en/tag/gatekeeper/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Your Mac App Is Not Broken: Gatekeeper May Just Distrust an Unsigned Tool</title>
				<link>https://blog.margrop.net/en/post/macos-gatekeeper-unsigned-app-fix/</link>
				<pubDate>Mon, 01 Jun 2026 07:35:00 +0800</pubDate>
				<guid>https://blog.margrop.net/en/post/macos-gatekeeper-unsigned-app-fix/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;When a macOS utility refuses to launch after being downloaded, the first conclusion should not be “the app is broken.” A very common cause is a combination of two facts: the app still has the &lt;code&gt;com.apple.quarantine&lt;/code&gt; extended attribute that marks it as downloaded from the internet, and the app bundle does not have a usable signature that Gatekeeper can trust. For first launch, “downloaded from the web + no usable signature” is enough for macOS to block it.&lt;/p&gt;&#xA;&lt;p&gt;For a tool whose source you understand and trust, the smallest local repair is straightforward: inspect the quarantine attribute, verify the signing state, apply a local ad-hoc signature to that one app bundle, remove quarantine from that one app, and then verify the result. The point is not to turn off macOS security globally. The point is to fix one known local tool while keeping the safety boundary clear.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This post is based on a real local troubleshooting session, but all private details have been removed. There are no real internal addresses, usernames, tokens, private download locations, hostnames, or machine-specific paths. The examples use placeholders such as &lt;code&gt;/Applications/&amp;lt;App&amp;gt;.app&lt;/code&gt; and &lt;code&gt;&amp;lt;App&amp;gt;&lt;/code&gt;. The goal is to share a repeatable diagnostic method, not to expose an environment.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
