<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Accessibility on Nick Liu - Software Engineer</title>
    <link>/tags/accessibility/</link>
    <description>Recent content in Accessibility on Nick Liu - Software Engineer</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>nickboy@users.noreply.github.com (Nick Liu)</managingEditor>
    <webMaster>nickboy@users.noreply.github.com (Nick Liu)</webMaster>
    <copyright>2026 Nick Liu</copyright>
    <lastBuildDate>Sun, 10 May 2026 22:48:37 -0700</lastBuildDate><atom:link href="/tags/accessibility/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>TCC pins your Accessibility grant to a cdhash. Every rebuild breaks it.</title>
      <link>/posts/tcc-cdhash-trap/</link>
      <pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate>
      <author>nickboy@users.noreply.github.com (Nick Liu)</author>
      <guid>/posts/tcc-cdhash-trap/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  &#xA;My daemon&#39;s preflight log said `osascript is not allowed assistive access. (-1719)`. System Settings disagreed — the entry was right there, toggled on. Spoiler: ad-hoc codesigning pins TCC&#39;s designated requirement to the binary&#39;s cdhash, and `bun build --compile` produces a different cdhash on every rebuild.&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;I&amp;rsquo;m building a Stream Deck plugin called &lt;a href=&#34;https://github.com/nickboy/claudedeck&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ClaudeDeck&lt;/a&gt; — Stream Deck is Elgato&amp;rsquo;s little USB grid of programmable keys with LCD displays under each one. The plugin talks to a background daemon (a long-running process that starts at login and waits for events), and that daemon needs to call System Events via AppleScript to switch Ghostty tabs (Ghostty is my terminal emulator) whenever I press a Stream Deck key. macOS gates that capability — automating other apps — through &lt;strong&gt;System Settings → Privacy &amp;amp; Security → Accessibility&lt;/strong&gt;, the pane you&amp;rsquo;ve probably toggled for tools like Rectangle or BetterTouchTool. So on first install I added the daemon, toggled it on, and got back to work.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
