1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
id = "claude"
version = "2026.06.10.3"
min_engine_version = 2
updated_at = "2026-06-10T00:00:00Z"
aliases = ["claude-code"]
[[rules]]
id = "osc_title_working"
state = "working"
priority = 1100
region = "osc_title"
visible_working = true
regex = ['^[\x{2800}-\x{28FF}] ']
[[rules]]
id = "transcript_viewer"
state = "unknown"
priority = 1000
region = "bottom_non_empty_lines(3)"
skip_state_update = true
contains = ["showing detailed transcript"]
any = [
{ contains = ["ctrl+o", "to toggle"] },
{ contains = ["ctrl+e", "show all"] },
{ contains = ["ctrl+e", "collapse"] },
{ contains = ["↑↓ scroll"] },
{ contains = ["? for shortcuts"] },
]
[[rules]]
id = "live_blocked_form"
state = "blocked"
priority = 980
region = "after_last_horizontal_rule"
visible_blocker = true
contains = ["enter to select", "esc to cancel"]
any = [
{ contains = ["tab/arrow keys to navigate"] },
{ contains = ["arrow keys to navigate"] },
{ contains = ["arrows to navigate"] },
{ contains = ["↑/↓ to navigate"] },
{ contains = ["↑↓ to navigate"] },
]
[[rules]]
id = "dynamic_workflow_prompt"
state = "blocked"
priority = 980
region = "whole_recent"
visible_blocker = true
contains = ["run a dynamic workflow?", "esc to cancel"]
[[rules]]
id = "live_prompt_box"
state = "idle"
priority = 950
region = "prompt_box_body"
visible_idle = true
line_regex = ['^\s*❯']
not = [
{ contains = ["enter to select"] },
{ contains = ["esc to cancel"] },
{ contains = ["tab/arrow keys"] },
{ contains = ["arrow keys to navigate"] },
{ contains = ["↑/↓ to navigate"] },
]
[[rules]]
id = "model_picker_menu"
state = "unknown"
priority = 900
region = "whole_recent"
skip_state_update = true
contains = ["select model", "enter to set as default", "esc to cancel"]
not = [
{ contains = ["do you want to proceed?"] },
{ contains = ["enter to select"] },
]
[[rules]]
id = "bash_permission_prompt"
state = "blocked"
priority = 850
region = "whole_recent"
visible_blocker = true
contains = ["do you want to proceed?"]
any = [
{ contains = ["bash command"] },
{ contains = ["bash("] },
{ contains = ["contains expansion"] },
{ contains = ["tab to amend"] },
{ contains = ["ctrl+e to explain"] },
]
all = [
{ any = [{ line_regex = ['(?i)^\s*❯?\s*yes\b'] }, { line_regex = ['(?i)^\s*1\.\s*yes\b'] }, { line_regex = ['(?i)^\s*2\.\s*no\b'] }] },
]
[[rules]]
id = "generic_permission_prompt"
state = "blocked"
priority = 840
region = "after_last_horizontal_rule"
visible_blocker = true
contains = ["do you want to proceed?", "esc to cancel"]
all = [
{ any = [
{ line_regex = ['(?i)^\s*❯?\s*1\.\s*yes\b'] },
{ line_regex = ['(?i)^\s*2\.\s*yes\b'] },
{ line_regex = ['(?i)^\s*2\.\s*no\b'] },
{ line_regex = ['(?i)^\s*3\.\s*no\b'] },
] },
]
[[rules]]
id = "legacy_no_prompt_blocker"
state = "blocked"
priority = 300
region = "whole_recent"
any = [
{ contains = ["do you want to"], any = [{ contains = ["yes"] }, { contains = ["❯"] }] },
{ contains = ["would you like to"], any = [{ contains = ["yes"] }, { contains = ["❯"] }] },
{ contains = ["waiting for permission"] },
{ contains = ["do you want to allow this connection?"] },
{ contains = ["tab to amend"] },
{ contains = ["ctrl+e to explain"] },
{ contains = ["do you want to proceed?", "esc to cancel"] },
{ contains = ["review your answers"] },
{ contains = ["skip interview and plan immediately"] },
]
not = [
{ regex = ['(?m)^\s*❯\s*$'] },
]
[[rules]]
id = "osc_title_idle"
state = "idle"
priority = 250
region = "osc_title"
visible_idle = true
regex = ['^\x{2733} ']
[[rules]]
id = "osc_progress_idle"
state = "idle"
priority = 250
region = "osc_progress"
regex = ['^4;0']
|