Skip to content

feature: startup banner 偵測「versioned claude host + EventKit 未授權」組合並主動提示 (sister concern from #170) #175

Description

@kiki830621

Problem

#170 診斷確認的緩解選項 2:每次 Claude Code 自動更新輪替 versioned binary path(~/.local/share/claude/versions/<N>),host 側 TCC grant 失效,使用者只會看到 tool call 突然 access denied,無主動提示。

#122 的 startup banner drift detector 已有「stale process / csreq mismatch」等 signal 家族;缺一個「host context 是 versioned claude binary 且 Calendar/Reminders notDetermined 或 denied」的組合 signal — 命中時主動提示使用者去 System Settings toggle 新版本號 entry(或觸發 re-prompt),把「昨天還能用今天壞了」的困惑收斂成一行可行動訊息。

Type

feature(drift detector 新 signal)

Expected

  1. Banner 偵測邏輯:walk parent chain 找 ~/.local/share/claude/versions/ pattern(判定 host = Claude Code versioned binary)+ 該 context 下 EventKit authorizationStatus 非 fullAccess → emit 提示行(含 troubleshoot-tcc 指引 pointer)
  2. 沿用 [bug] v1.9.0: create_event 仍回 "denied" 即使 similar_events 讀取成功(read/write auth status 矛盾) #122 signal 慣例:advisory、stderr、非阻塞、可 CHE_ICAL_MCP_NO_BANNER 關閉
  3. 測試:detector signal 的 fake-driven 單元測試(TCCDriftDetectorTests 家族慣例)

Dependency(Blocking)

Blocked on PR #174 merge#169ParentChainSource — parent chain 判定所需 primitive)。若 #174 被 reject,替代路徑:banner 內建輕量單層 getppid() + proc_pidpath 檢查(不 walk 全鏈,只認直系 parent 的 versions/ pattern)。


Source: surfaced during /idd-diagnose #170 sister concern surfacing (Step 3.6)


Current Status

Phase: closed
Last updated: 2026-07-10 by /idd-verify

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions