Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3072 commits
Select commit Hold shift + click to select a range
897a4d7
fix(core): Fix hysteresis in async context management pipelines. (#26…
joshualitt May 6, 2026
7fb5146
Tighten private Auto Memory patch allowlist (#26535)
SandyTao520 May 6, 2026
e4242ed
fix(cli): hide read-only settings scopes (#26249)
cvan20191 May 6, 2026
feae856
fix(ci): preserve executable bit for mac binaries (#26600)
ruomengz May 6, 2026
a38f393
fix(cli): improve mcp list UX in untrusted folders (#26457)
Adib234 May 6, 2026
bb4224f
fix(core): prevent silent hang during OAuth auth on headless Linux (#…
RhysSullivan May 6, 2026
20b5a4c
Changelog for v0.42.0-preview.0 (#26537)
gemini-cli-robot May 6, 2026
4a10751
ci: fix Argument list too long in triage workflows (#26603)
cocosheng-g May 6, 2026
90304b2
refactor(cli): migrate core tools to native ToolDisplay property and …
mbleigh May 6, 2026
a809bc7
don't wrap args unnecessarily (#26599)
scidomino May 6, 2026
49456e4
fix(core): preserve system PATH in Git environment to fix ENOENT (#25…
cocosheng-g May 7, 2026
ac31e80
fix(routing): fix resolveClassifierModel argument mismatch in Approva…
danielweis May 7, 2026
4fd411a
docs: add vi mode shortcuts and clarify MCP/custom sandbox setup (#23…
chrisjcthomas May 7, 2026
451bf32
fix(ux): fixed issue with transcribed text not showing after releasin…
devr0306 May 7, 2026
3a0b19d
ci: fix json parsing in scheduled triage workflow (#26656)
cocosheng-g May 7, 2026
16e3458
fix(cli): hide /memory add subcommand when memoryV2 is enabled (#26605)
SandyTao520 May 7, 2026
c52aceb
fix: prevent false command conflicts when launching from home directo…
Br1an67 May 7, 2026
ebeea75
fix(core): cache model routing decision in LocalAgentExecutor (#26548)
akh64bit May 8, 2026
38a9dd1
Changelog for v0.42.0-preview.2 (#26597)
gemini-cli-robot May 8, 2026
2d10691
skip broken test (#26705)
scidomino May 8, 2026
3805640
feat: export session to file and import via flag (#26514)
cocosheng-g May 8, 2026
2cad5db
Feat: Add Machine Hostname to CLI interface (#25637)
M-DEV-1 May 8, 2026
838f6f8
docs(extensions): refactor releasing guide and add update mechanisms …
ruomengz May 8, 2026
f42d4e3
fix(ci): fix maintainer identification in lifecycle manager (#26706)
gundermanc May 8, 2026
dfec948
fix(ui): added quotes around session id in resume tip (#26669)
devr0306 May 8, 2026
43dda31
Changelog for v0.41.0 (#26670)
gemini-cli-robot May 8, 2026
12c8469
refactor(core): agent session protocol changes (#26661)
adamfweidman May 8, 2026
01635dd
fix(context): implement loose boundary policy for gc backstop. (#26594)
joshualitt May 8, 2026
f86e0ee
fix(core): throw explicit error on dropped tool responses (#26668)
aishaneeshah May 8, 2026
6b9b778
fix: resolve "function response turn must come immediately after func…
danielweis May 8, 2026
5890f50
fix(core): resolve parallel tool call streaming ID collision (#26646)
aishaneeshah May 8, 2026
014bfeb
feat(core): add LocalSubagentProtocol behind AgentProtocol (#25302)
adamfweidman May 8, 2026
9d0860b
fix(cli): remove noisy theme registration logs from terminal (#25858)
JayadityaGit May 8, 2026
90e7155
ci: implement codebase-aware effort level triage (#26666)
cocosheng-g May 8, 2026
1238dcf
feat(acp/core): prefix tool call IDs with tool names to support tool …
sripasg May 8, 2026
f51391a
fix(mcp): treat GET 404 as 405 in StreamableHTTPClientTransport (#24847)
krishdef7 May 8, 2026
54f1e8c
feat(core): add RemoteSubagentProtocol behind AgentProtocol (#25303)
adamfweidman May 8, 2026
1a894c1
feat(context): Improvements to the snapshotter. (#26655)
joshualitt May 8, 2026
8a3fde4
fix(context): Change snapshotter model config. (#26745)
joshualitt May 11, 2026
7cd228f
fix(cli): allow installing extensions from ssh repo (#26274)
danielmundi May 11, 2026
ecfaac2
fix(cli): prevent duplicate SessionStart systemMessage render (#25827)
dimssu May 11, 2026
4739495
fix(cli/acp): prevent infinite thought loop in ACP mode by disablig n…
sripasg May 11, 2026
36a7fa0
fix(cli): use static tool name in confirmation prompt to avoid parsin…
cocosheng-g May 11, 2026
f8198a2
fix(routing): Refactor tool turn handling for the conversation histor…
danielweis May 11, 2026
1340c96
fix(core): handle malformed projects.json in ProjectRegistry (#26885)
cocosheng-g May 11, 2026
c0d5ab1
fix(ui): added a gutter width to the input prompt width calculation (…
devr0306 May 11, 2026
8e58df7
fix: prevent EISDIR crash when customIgnoreFilePaths contains directo…
suhaan-24 May 11, 2026
e1b3ce5
revert 6b9b778d821728427eea07b1b97ba07378137d0b (#26893)
danielweis May 11, 2026
84fc5cd
Fix/vscode run current file ts (#22894)
Neil-N4 May 11, 2026
9ff7304
Allow Enter to select session while in search mode in /resume (#21523)
f-pieri May 11, 2026
9f759f9
fix(core): ignore .pak and .rpa game archive formats by default (#26884)
Eswar809 May 11, 2026
24b98ad
fix(cli): enable adk non-interactive session (#26895)
adamfweidman May 11, 2026
11a9edc
fix(cli): restore resume for legacy sessions (#26577)
KurodaKayn May 12, 2026
7a9ed4c
fix: respect explicit model selection after Flash quota exhaustion (#…
cocosheng-g May 12, 2026
07792f9
feat(context): Introduce adaptive token calculator to more accurately…
joshualitt May 12, 2026
9fe8643
chore: update checkout action configuration in workflows (#26897)
galdawave May 12, 2026
bc730b2
fix (telemetry): inject quota_project_id to prevent fallback to defau…
TNTCompany May 12, 2026
ebe1555
Exclude extension context from skill extraction agent (#26879)
SandyTao520 May 12, 2026
27a39b0
Enable NumericalRouter when using dynamic model configs (#26929)
kevinjwang1 May 12, 2026
c4973d0
ci: actively triage missing priority labels and intelligently clean u…
cocosheng-g May 12, 2026
c987b99
refactor(core): introduce SubagentState enum for progress (#26934)
adamfweidman May 12, 2026
f901a4e
fix(ci): replace brittle --no-tag with explicit staging-tmp tag (#26940)
scidomino May 12, 2026
2334e9b
Incremental refactor repo agent towards skills-based composition (#26…
gundermanc May 12, 2026
c37b911
fix(ui): fixed line wrap padding for selection lists (#26944)
devr0306 May 12, 2026
120dfc7
fix(core): update read_file schema for v1 compatibility (#22183) (#26…
cocosheng-g May 12, 2026
022e8ba
fix(ci): configure git remote with token for authentication (#26949)
scidomino May 12, 2026
583839b
chore(release): bump version to 0.44.0-nightly.20260512.g022e8baef (#…
gemini-cli-robot May 12, 2026
8f03aa3
Changelog for v0.42.0 (#26958)
gemini-cli-robot May 12, 2026
31d5947
Refactor: Eliminate `no-unsafe-return` suppressions via strict type v…
M-DEV-1 May 12, 2026
5ee05c7
Changelog for v0.43.0-preview.0 (#26959)
gemini-cli-robot May 13, 2026
8cda688
feat(core): change agent registration to first-wins and prioritize pr…
adamfweidman May 13, 2026
749657c
feat(cli): merge Auto modes into a single Auto mode (#26714)
DavidAPierce May 13, 2026
297d3a3
fix(core): preserve OAuth refresh tokens during rotation and retrieva…
cocosheng-g May 13, 2026
1e7063b
fix(cli): allow keychain auth for --list-sessions and non-interactive…
cocosheng-g May 13, 2026
63b4bbf
fix(core): handle EISDIR on virtual drives in memory discovery (#26985)
cocosheng-g May 13, 2026
08abe45
fix(cli): auto-approve shell redirections in AUTO_EDIT mode (#27003)
cocosheng-g May 13, 2026
fc40544
ci: suppress bot comments during standard triage maintenance (#27006)
cocosheng-g May 13, 2026
9da30b8
fix(core): isolate subagent thread context (#26449)
akh64bit May 13, 2026
fd01cc0
fix(core): refresh MCP OAuth token usage after re-auth (#26312)
sahilkirad May 13, 2026
71a2c02
fix(ui): clamped table column widths (#26991)
devr0306 May 13, 2026
74e9079
chore: add execution permission to scripts/review.sh (#27009)
scidomino May 13, 2026
41599ce
fix(core): made context files append instead of replace (#26950)
devr0306 May 13, 2026
0750b01
fix: add system PATH fallback for ripgrep resolution (#26777) (#26868)
cocosheng-g May 13, 2026
7504259
chore: clean up launched memory features (#26941)
SandyTao520 May 13, 2026
724981b
fix(core): throttle shell text output and bound live UI buffer (#26955)
emersonbusson May 13, 2026
1814c7f
fix(cli): don't crash when an @-mention captures a non-path blob (#25…
ifitisit May 13, 2026
77078b3
fix(core): ensure stable fallback for restricted preview models (#26999)
galdawave May 13, 2026
488d71b
feat(core): expose RAG snippets to local log file for debugging (#27016)
spencer426 May 14, 2026
b705505
fix(acp/auth): prevent conflicting credentials on enterprise gateways…
sripasg May 14, 2026
e3f2d3e
fix(core): respect NO_PROXY for network-based MCP servers (#27012)
cocosheng-g May 14, 2026
456d1ae
fix(cli): resolve permission denied in sandbox on NixOS and other dis…
cocosheng-g May 14, 2026
6fee663
fix(ui): preserve new line at the end of edit window (#27057)
devr0306 May 14, 2026
918d6b6
fix(core): ensure Vertex AI sets hasAccessToPreviewModels and remove …
galdawave May 14, 2026
5159b08
fix(core): ensure stable admin settings comparison across IPC to prev…
DavidAPierce May 14, 2026
a6ed2cc
fix(deps): update vulnerable dependencies (#27062)
scidomino May 14, 2026
2151653
fix(core): resolve EISDIR errors during file processing (#21527) (#27…
ProthamD May 14, 2026
0c0d88d
docs(extensions): clarify env var sanitization policy for MCP and ext…
galdawave May 14, 2026
7a5a818
fix(ui): add ENAMETOOLONG and ENOTDIR to exceptions for file parsing …
devr0306 May 14, 2026
b7f2067
fix(cli): explicitly clear entrypoint when spawning sandbox container…
cocosheng-g May 14, 2026
f6494f3
docs: update sandbox image command (#26774)
sjhddh May 14, 2026
928a311
fix(core): externalize https-proxy-agent to fix proxy support (#26361)
sotokisehiro May 14, 2026
b213fd6
security: update dependencies to fix critical and high vulnerabilitie…
scidomino May 15, 2026
d32c9b7
Fix/web fetch ctrl c abort (#24320)
ProthamD May 15, 2026
b36788e
fix(core): add aliases and thinking config for gemini-3.1 models (#27…
anishs1207 May 15, 2026
77e65c0
fix(core): use hasAccessToPreview for auto model resolution and fix d…
DavidAPierce May 15, 2026
5611ff4
feat(core): add adk.agentSessionSubagentEnabled flag (#26947)
adamfweidman May 17, 2026
84423e6
fix(core): enforce compile-time exhaustiveness in content-utils (#27207)
adamfweidman May 18, 2026
9d01958
feat(skills): add agent-tui and tui-tester skills (#27121)
adamfweidman May 18, 2026
055e0f6
fix(context): Fix snapshot recovery across sessions. (#26939)
joshualitt May 18, 2026
7ff6080
fix(core): add unit tests for stableStringify (#27212)
devr0306 May 18, 2026
dc47aaa
fix(core): prefer pwsh.exe over Windows PowerShell 5.1 (#25859) (#25900)
kaluchi May 18, 2026
6973b96
feat(core): add LocalSessionInvocation (#26665)
adamfweidman May 18, 2026
792654c
refactor: decouple auto model description and configuration from rele…
danielweis May 18, 2026
f09d45d
fix(core): prevent isBinary false-positive on Windows PTY streams (#2…
TirthNaik-99 May 18, 2026
7478859
fix(cli): Prevent unmapped keys in Vim Normal mode from inserting tex…
Rajeshpatel07 May 19, 2026
85566a7
fix(a2a-server): Implement default policy loading for parity with CLI…
kschaab May 19, 2026
5650fa9
feat(core): add RemoteSessionInvocation (#26937)
adamfweidman May 19, 2026
1a024f3
fix: allow configured MCP servers in non-interactive mode (#27215)
cocosheng-g May 19, 2026
3494fda
fix(core): add exception handling to migrateFromFileStorage (#27229)
devr0306 May 19, 2026
96a8d1d
fix(cli): bundle ink worker-entry.js (#27249)
rmedranollamas May 19, 2026
c4758ba
feat(core): wire AgentSession invocations into agent-tool (#26948)
adamfweidman May 19, 2026
fcc8c62
fix(core): prevent path traversal in custome command file injection (…
ompatel-aiml May 19, 2026
37f3a4c
fix(core): respect NO_PROXY in global fetch dispatcher (#27216)
cocosheng-g May 19, 2026
9de4289
fix(core): correctly handle nullable array types in MCP tools (#27228)
devr0306 May 19, 2026
6589cdf
Proposal: deterministic encoding for child-process I/O (#27247)
kaluchi May 19, 2026
8997488
fix(cli): preserve proxy-agent named exports in ESM bundle (#27145)
ashishch432 May 19, 2026
57c42a5
feat(cli): add Sublime Text and Emacs Client editors, improve error m…
alberti42 May 19, 2026
ec4910f
Changelog for v0.43.0-preview.1 (#27297)
gemini-cli-robot May 20, 2026
124539b
fix(devtools): bundle devtools package to avoid resolution errors (#2…
rmedranollamas May 20, 2026
2c85f57
fix(cli): integrate PolicyEngine into ACP session to prevent deadlock…
cocosheng-g May 20, 2026
29481a1
fix: robust ripgrep path resolution and 1p hermetic execution support…
cocosheng-g May 20, 2026
26f8c0f
refactor: decouple stored session deletion from ChatRecordingService …
yuvrajangadsingh May 20, 2026
aebdba6
fix(core): improve Alpine shell compatibility (#26770)
dibyx May 20, 2026
99ae4d8
fix(core): generalize MCP compliance fix for tool results (#27045)
cocosheng-g May 20, 2026
c854b60
fix(scripts): scrub CI env vars in dev to keep interactive mode (#27159)
Hashaam101 May 20, 2026
e440e02
fix(core): Added date field for the GCal MCP (#27251)
devr0306 May 20, 2026
d7384c4
fix(core): centralize path validation to prevent crashes from malform…
cocosheng-g May 20, 2026
f79d5e0
fix(core): prevent SIGHUP kills in PTY environments (WSL2/Kitty/Alacr…
ProthamD May 20, 2026
5c4420c
fix(core): dynamic fallback routing for exhausted quota models (#27315)
cocosheng-g May 20, 2026
96903d5
Auto detect pnpm global installation path for macOS and Windows (#22748)
tisonkun May 20, 2026
64cb88d
fix(windows): resolve interactive shell arrow-key navigation on Windo…
KumarADITHYA123 May 20, 2026
906f8a3
ci: robust stale issue lifecycle and consolidated triage labels (#27015)
cocosheng-g May 20, 2026
50c2e67
fix(context): Ensure last message is processed. (#27232)
joshualitt May 21, 2026
df1d111
chore/release: bump version to 0.44.0-nightly.20260521.g57c42a5c4 (#2…
gemini-cli-robot May 21, 2026
c4d0e3c
fix(ui): added volta to auto update check (#27353)
devr0306 May 21, 2026
854f811
perf: optimize issue triage and lifecycle management (#27346)
cocosheng-g May 21, 2026
6afb109
chore(release): bump version to 0.45.0-nightly.20260521.g854f811be (#…
gemini-cli-robot May 22, 2026
ba04e99
fix(cli): prevent Termux relaunch and resize remount loops (#27110)
saymanq May 22, 2026
d1fa323
Feat/a2a expose usage metadata (#27288)
jvargassanchez-dot May 22, 2026
e6f92d6
feat(context): Complete simplification work. (#27345)
joshualitt May 22, 2026
5188601
fix(core): force update_topic tool to execute sequentially (#27357)
jvargassanchez-dot May 22, 2026
980a257
Changelog for v0.44.0-preview.0 (#27360)
gemini-cli-robot May 22, 2026
a00d03e
Changelog for v0.43.0 (#27361)
gemini-cli-robot May 22, 2026
3cc7e5b
Revert "fix(core): prevent SIGHUP kills in PTY environments" (#27401)
bbiggs May 23, 2026
630ecc2
fix(cli): filter internal session context from history during resumpt…
rmedranollamas May 24, 2026
4a5d5cf
Update default auto routing (#27071)
DavidAPierce May 26, 2026
85563da
fix(core): bypass routing classifiers to prevent orphaned function re…
danielweis May 26, 2026
8b56d27
fix(core): suppress PTY resize EBADF errors (#27461)
scidomino May 26, 2026
41c9260
fix(core): prevent blacklist bypass in mcp list (#27377)
ompatel-aiml May 26, 2026
5cac7c1
fix(cli): ignore unmapped vim normal keys (#27102)
MukundaKatta May 27, 2026
bd53951
fix(core): harden PTY resize against native crashes (#27496)
scidomino May 28, 2026
c82e2b5
Changelog for v0.45.0-preview.0 (#27495)
gemini-cli-robot May 28, 2026
b77beba
Changelog for v0.44.0 (#27569)
gemini-cli-robot May 29, 2026
211e7d1
fix(cli): prevent spam loop when preferredEditor is invalid (#25324)
Niralisj May 29, 2026
0139140
Adding quote (#27571)
scidomino May 29, 2026
665228e
Transition to flash GA model when experiment flag is present. (#27570)
DavidAPierce Jun 1, 2026
5110bdf
chore(ci): add optimized PR size labeler and batch workflows (#27616)
sripasg Jun 2, 2026
cfceceb
fix(ci): use pull_request_target trigger to grant write access on for…
sripasg Jun 2, 2026
ae87e20
chore(release): bump version to 0.47.0-nightly.20260602.gcfcecebe8 (#…
gemini-cli-robot Jun 3, 2026
d2cd12a
Changelog for v0.46.0-preview.0 (#27641)
gemini-cli-robot Jun 3, 2026
e4315b3
Respect backend definitions for 3.5 flash and Update auto mode to use…
DavidAPierce Jun 3, 2026
dceb2ea
fix(policy): add EBUSY fallback and TOML parse recovery (#19919) (#21…
krishdef7 Jun 3, 2026
4196596
Changelog for v0.45.0 (#27642)
gemini-cli-robot Jun 3, 2026
f40498d
update the max amount of times the Antigravity transition banner can …
DavidAPierce Jun 5, 2026
0567b25
chore: remove experimental text from browser agent docs (#27746)
gsquared94 Jun 8, 2026
8e99c26
fix(core): implement atomic update in MCP tool discovery (#27619)
luisfelipe-alt Jun 9, 2026
f08b4af
Vertex ai model mapping fix (#27749)
DavidAPierce Jun 9, 2026
4523560
Add documentation and migration commands for Antigravity CLI (#27765)
DavidAPierce Jun 9, 2026
3a13b8e
Avoid persisting empty resume sessions (#27770)
SandyTao520 Jun 9, 2026
1d2adf7
chore(release): bump version to 0.48.0-nightly.20260609.g3a13b8eeb (#…
gemini-cli-robot Jun 10, 2026
5d4af9f
ci(dependabot): enable cooldown period for npm packages (#27743)
ruomengz Jun 10, 2026
1eb8bd4
refactor(core): standardize tool output formatting (#27772)
galdawave Jun 11, 2026
4e10a34
ci: update workflow logging and policy configurations (#27853)
galdawave Jun 11, 2026
ba12896
fix(core): Ensure zero-quota limits fail fast to prevent retry loop h…
luisfelipe-alt Jun 12, 2026
9e5599c
fix(core): handle multi-line escaped quotes in stripShellWrapper (#27…
sanchezcoraspe Jun 12, 2026
bca5667
fix(cli): prevent path traversal vulnerabilities during skill install…
ompatel-aiml Jun 15, 2026
0f8a157
Fix/pending tools and trust overrides (#27854)
jvargassanchez-dot Jun 15, 2026
83d7567
ci: use internal environment for scheduled nightly releases (#27865) …
rmedranollamas Jun 15, 2026
fbce3e5
feat(core): Support GDC air-gapped Service Identity after auth librar…
sidhantgoyal-droid Jun 16, 2026
5624a3b
fix(cli): handle tmux false positive background detection (#27572)
amelidev Jun 16, 2026
97455e5
Add static eval source analyzer (#27631)
ved015 Jun 16, 2026
926f3d9
fix(config): migrate coreTools setting to tools.core (#27947)
galdawave Jun 16, 2026
f741d03
fix(core-tools): resolve defensive path resolution for at-reference f…
luisfelipe-alt Jun 16, 2026
4d3dcdc
Revert "fix(core-tools): resolve defensive path resolution for at-ref…
galdawave Jun 17, 2026
7ef3b4e
chore(release): bump version to 0.49.0-nightly.20260617.g4d3dcdce1 (#…
gemini-cli-robot Jun 18, 2026
d5e25b9
Changelog for v0.48.0-preview.0 (#27999)
gemini-cli-robot Jun 18, 2026
c427d18
fix(ci): provide fallbacks for package variables in nightly release (…
galdawave Jun 18, 2026
93844df
chore(deps): pin dependencies and enforce 14-day update cooldown (#27…
galdawave Jun 18, 2026
6613e12
fix(ci): append trailing slash to registry url in npmrc (#28038)
rmedranollamas Jun 19, 2026
c22137e
feat: add eval:inventory CLI command and reporting logic (#28009)
ved015 Jun 19, 2026
be7ba2c
fix: resolve workspace publish failures and scheduler event loop star…
rmedranollamas Jun 21, 2026
d3ef6ac
fix(ci): use wombat dressing room fallback in nightly release to prev…
rmedranollamas Jun 23, 2026
6e0bd68
Add JSON output for eval inventory (#28058)
ved015 Jun 23, 2026
f8541cf
fix/verify release npm ci ignore scripts (#28116)
rmedranollamas Jun 24, 2026
02c6c77
fix(ci): prevent workspace binary shadowing in release verification (…
galdawave Jun 24, 2026
d845bc5
Feat/tool registry discovery (#28113)
ved015 Jun 24, 2026
3fbf93e
fix(ci): prevent bad NPM releases and promote job crashes (#28147)
galdawave Jun 25, 2026
19ad71b
Changelog for v0.50.0-preview.1 (#28150)
gemini-cli-robot Jun 25, 2026
df99735
chore(release): bump version to 0.51.0-nightly.20260625.g3fbf93e26 (#…
gemini-cli-robot Jun 25, 2026
8cd5c0f
Fix no_proxy test (#28131)
jerrylin3321 Jun 25, 2026
b144164
Vertex base url update (#28145)
DavidAPierce Jun 25, 2026
ae0a3aa
fix(security): enforce case-insensitive sensitive path blocklist and …
luisfelipe-alt Jun 26, 2026
b5fc06e
fix(core-tools): resolve defensive path resolution for at-reference f…
luisfelipe-alt Jun 30, 2026
7f00c5f
feat(caretaker): implement Cloud Run webhook ingestion service (#28015)
chadd28 Jun 30, 2026
ff00dac
fix(core): resolve symbolic link directory escape in memory import pr…
luisfelipe-alt Jul 1, 2026
f7af4e5
feat(caretaker): egress cloud run service skeleton (#28167)
chadd28 Jul 2, 2026
892b35f
fix(sandbox): make ~/.gitconfig read-only in the macOS sandbox (#28221)
ompatel-aiml Jul 6, 2026
15a9429
fix(core): preserve escape sequences in string literals for modern mo…
luisfelipe-alt Jul 6, 2026
27a3da3
fix(core): strip thoughts from scrubbed history turns and resolve tho…
amelidev Jul 7, 2026
b7c61c9
Refactor: exclude transient CI configuration files from workspace con…
DavidAPierce Jul 7, 2026
c988cbb
feat(caretaker): add triage worker core foundational modules (#28163)
chadd28 Jul 7, 2026
b31b755
feat(caretaker-egress): implement octokit github action handler for e…
chadd28 Jul 8, 2026
132f38c
chore(release): bump version to 0.52.0-nightly.20260707.g27a3da3e8 (#…
gemini-cli-robot Jul 8, 2026
70f4d57
Changelog for v0.51.0-preview.0 (#28320)
gemini-cli-robot Jul 8, 2026
172ff92
Changelog for v0.50.0 (#28322)
gemini-cli-robot Jul 8, 2026
a8b115c
fix(core-tools): bypass LLM correction for JSON and IPYNB files in wr…
amelidev Jul 9, 2026
9a023bb
fix(core): use unambiguous previous intent label in fallback summary …
amelidev Jul 9, 2026
a4c91ce
feat(caretaker-triage): implement main worker execution loop and egre…
chadd28 Jul 9, 2026
f354eeb
fix(privacy): show a clear message when the account has no Code Assis…
ompatel-aiml Jul 10, 2026
42ee2b7
fix(core): enrich shared project quota limit errors with setup hint (…
amelidev Jul 13, 2026
f5e58ff
fix(a2a-server): ensure task cancellation aborts execution loop (#28316)
luisfelipe-alt Jul 13, 2026
a345621
fix(core): simplify plan mode write policy to support relative paths …
DavidAPierce Jul 13, 2026
fa97539
feat(core): Bump node google-auth-library version to 10.9.0 (#28385)
jerrylin3321 Jul 13, 2026
1ae8ba6
chore/release: bump version to 0.52.0-nightly.20260715.gfa975395b (#2…
gemini-cli-robot Jul 15, 2026
3ff5ba2
fix(core,a2a): group cancelled tool responses and coalesce consecutiv…
luisfelipe-alt Jul 15, 2026
aea9e5e
feat(caretaker-triage): implement LLM triage orchestrator and contain…
chadd28 Jul 17, 2026
69e0c26
refactor(cli): align macOS permissive Seatbelt profiles with deny-def…
ompatel-aiml Jul 17, 2026
acae712
fix(core): mitigate infinite ReAct loops and prompt injection loops (…
amelidev Jul 17, 2026
c776c66
fix(a2a-server): enforce workspace trust and task isolation to preven…
luisfelipe-alt Jul 21, 2026
f743ab5
fix(core): sequentially verify cached credentials and restore GOOGLE_…
luisfelipe-alt Jul 22, 2026
9681621
feat(evals): add eval coverage report command (#28169)
ved015 Jul 22, 2026
455d721
Changelog for v0.53.0-preview.0 (#28507)
gemini-cli-robot Jul 23, 2026
1c21640
Changelog for v0.52.0 (#28508)
gemini-cli-robot Jul 23, 2026
87f7851
chore(release): bump version to 0.54.0-nightly.20260722.gf743ab579 (#…
gemini-cli-robot Jul 23, 2026
a96259c
fix(caretaker): sanitize and wrap issue title in untrusted_context (#…
chadd28 Jul 23, 2026
d76d2d0
chore(caretaker): update vitest to v3.2.4 and add package-lock.json f…
chadd28 Jul 23, 2026
3c1bb8c
fix(core): rotate session ID on model fallback to prevent stateful AP…
amelidev Jul 23, 2026
69b51f8
feat(caretaker-triage): post comment before auto-closing issues (#28411)
chadd28 Jul 23, 2026
e2a5375
fix(core): enforce HTTPS for GoogleCredentialsAuthProvider to prevent…
amelidev Jul 24, 2026
3818efb
fix(core): filter out thought parts from getHistoryTurns when context…
DavidAPierce Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Git history - not needed in build context
.git

# Root node_modules - reinstalled inside container via npm ci
node_modules

# Package-level node_modules - reinstalled inside container
packages/*/node_modules

# Development and IDE files
.github
.vscode
npm-debug.log*

# Misc
.DS_Store
*.tmp
89 changes: 89 additions & 0 deletions .gcp/Dockerfile.development
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# --- STAGE 1: Base Runtime ---
FROM docker.io/library/node:20-slim AS base

RUN apt-get update && apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
curl \
dnsutils \
less \
jq \
ca-certificates \
git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# --- STAGE 2: Builder (Compile Main) ---
FROM base AS builder
WORKDIR /build
COPY . .
RUN npm ci --ignore-scripts
RUN npm run bundle
# Run the official release preparation script to move the bundle and assets into packages/cli
RUN node scripts/prepare-npm-release.js

# --- STAGE 3: Development Environment ---
FROM base AS development

WORKDIR /home/node/dev/main

# Set up npm global package folder
RUN mkdir -p /usr/local/share/npm-global \
&& chown -R node:node /usr/local/share/npm-global
ENV NPM_CONFIG_PREFIX=/usr/local/share/npm-global
ENV PATH=$PATH:/usr/local/share/npm-global/bin

# Copy package.json to extract versions for global tools
COPY package.json /tmp/package.json

# Install Build Tools, Global Dev Tools (pinned), and Linters
ARG ACTIONLINT_VER=1.7.7
ARG SHELLCHECK_VER=0.11.0
ARG YAMLLINT_VER=1.35.1

RUN apt-get update && apt-get install -y --no-install-recommends \
make \
g++ \
gh \
git \
unzip \
rsync \
ripgrep \
procps \
psmisc \
lsof \
socat \
tmux \
docker.io \
build-essential \
libsecret-1-dev \
libkrb5-dev \
file \
&& curl -sSLo /tmp/actionlint.tar.gz https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VER}/actionlint_${ACTIONLINT_VER}_linux_amd64.tar.gz \
&& tar -xzf /tmp/actionlint.tar.gz -C /usr/local/bin actionlint \
&& curl -sSLo /tmp/shellcheck.tar.xz https://github.com/koalaman/shellcheck/releases/download/v${SHELLCHECK_VER}/shellcheck-v${SHELLCHECK_VER}.linux.x86_64.tar.xz \
&& tar -xf /tmp/shellcheck.tar.xz -C /usr/local/bin --strip-components=1 shellcheck-v${SHELLCHECK_VER}/shellcheck \
&& pip3 install --break-system-packages yamllint==${YAMLLINT_VER} \
&& export TSX_VER=$(node -p "require('/tmp/package.json').devDependencies.tsx") \
&& export VITEST_VER=$(node -p "require('/tmp/package.json').devDependencies.vitest") \
&& export PRETTIER_VER=$(node -p "require('/tmp/package.json').devDependencies.prettier") \
&& export ESLINT_VER=$(node -p "require('/tmp/package.json').devDependencies.eslint") \
&& export CROSS_ENV_VER=$(node -p "require('/tmp/package.json').devDependencies['cross-env']") \
&& npm install -g tsx@$TSX_VER vitest@$VITEST_VER prettier@$PRETTIER_VER eslint@$ESLINT_VER cross-env@$CROSS_ENV_VER typescript@5.3.3 \
&& npm install -g @google/gemini-cli@nightly && mv /usr/local/share/npm-global/bin/gemini /usr/local/share/npm-global/bin/g-nightly \
&& npm install -g @google/gemini-cli@preview && mv /usr/local/share/npm-global/bin/gemini /usr/local/share/npm-global/bin/g-preview \
&& npm install -g @google/gemini-cli@latest && mv /usr/local/share/npm-global/bin/gemini /usr/local/share/npm-global/bin/g-stable \
&& apt-get purge -y build-essential libsecret-1-dev libkrb5-dev \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /root/.npm

# Copy the bundled CLI package to a permanent location and install it
# We MUST not delete this source folder as 'npm install -g <folder>'
# often symlinks to it for local folder installs.
COPY --from=builder /build/packages/cli /usr/local/lib/gemini-cli
RUN npm install -g /usr/local/lib/gemini-cli

USER node
CMD ["/bin/bash"]
10 changes: 10 additions & 0 deletions .gcp/Dockerfile.development.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
node_modules
.git
.gemini/workspaces
dist
!packages/*/dist/*.tgz
bundle
out
*.log
.env
.DS_Store
58 changes: 58 additions & 0 deletions .gcp/development-worker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
substitutions:
_IMAGE_NAME: 'development'
_ARTIFACT_REGISTRY_REPO: 'us-docker.pkg.dev/gemini-code-dev/gemini-cli'

steps:
# Step 1: Install root dependencies
- name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder'
id: 'Install Dependencies'
entrypoint: 'npm'
args: ['install']

# Step 2: Authenticate for Docker
- name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder'
id: 'Authenticate docker'
entrypoint: 'npm'
args: ['run', 'auth']

# Step 3: Build workspace packages
- name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder'
id: 'Build packages'
entrypoint: 'npm'
args: ['run', 'build:packages']

# Step 4: Build Development Image
- name: 'us-west1-docker.pkg.dev/gemini-code-dev/gemini-code-containers/gemini-code-builder'
id: 'Build Development Image'
entrypoint: 'bash'
env:
- 'RAW_BRANCH_VALUE=${BRANCH_NAME}'
args:
- '-c'
- |-
IMAGE_BASE="${_ARTIFACT_REGISTRY_REPO}/${_IMAGE_NAME}"

# Determine the primary tag (branch name or 'latest' for main)
# Use $$ for shell variables to avoid Cloud Build attempting premature substitution
RAW_BRANCH="$$RAW_BRANCH_VALUE"
if [ "$${RAW_BRANCH}" == "main" ]; then
TAG_PRIMARY="latest"
else
TAG_PRIMARY=$$(echo "$${RAW_BRANCH}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]')
fi

# Use SHORT_SHA if available (Cloud Build) or fallback to latest-dev
TAG_SHA="$${SHORT_SHA:-latest-dev}"

echo "📦 Building Development Image for: $${RAW_BRANCH} -> $${TAG_PRIMARY} ($${TAG_SHA})"

docker build -f .gcp/Dockerfile.development \
-t "$${IMAGE_BASE}:$${TAG_SHA}" \
-t "$${IMAGE_BASE}:$${TAG_PRIMARY}" .

docker push "$${IMAGE_BASE}:$${TAG_SHA}"
docker push "$${IMAGE_BASE}:$${TAG_PRIMARY}"

options:
defaultLogsBucketBehavior: 'REGIONAL_USER_OWNED_BUCKET'
dynamicSubstitutions: true
29 changes: 29 additions & 0 deletions .gemini/commands/core.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
description="Injects context of all relevant cli files"
prompt = """
The following output contains the complete
source code of packages/core.
**Pay extremely close attention to these files.** They define the project's
core architecture, component patterns, and testing standards.

The source code contains the content of absolutely every source code file in
packages/core.
You should very rarely need to read any other files from packages/core to resolve
prompts.

!{find packages/core \\( -path packages/cli/dist -o -path packages/core/dist -o -name node_modules \\) -prune -o -type f \\( -name "*.ts" -o -name "*.tsx" \\) ! -name "*.test.ts" ! -name "*.test.tsx" ! -name "*.d.ts" -exec echo "--- {} ---" \\; -exec cat {} \\;}

In addition to the code context, you MUST strictly adhere to the following frontend-specific development guidelines when writing code in packages/core.

## Configuration & Settings
* **Settings vs Args**: Use settings for user-configurable options; do not add new CLI arguments.
* **Schema**: Add new settings to `packages/cli/src/config/settingsSchema.ts`.
* **Documentation**:
* If `showInDialog: true`, document in `docs/get-started/configuration.md`.
* Ensure `requiresRestart` is correctly set.

## General
* **Logging**: Use `debugLogger` for errors. NEVER leave `console.log/warn/error` in the code.
* **TypeScript**: Avoid the non-null assertion operator (`!`).

{{args}}.
"""
20 changes: 20 additions & 0 deletions .gemini/commands/frontend.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
description="Injects context of all relevant cli files"
prompt = """
The source code contains the content of absolutely every source code file in
packages/cli and key files from packages/core. In addition to the source code, the following test files are
included as they are test files that conform to the project's testing standards:
`packages/cli/src/ui/components/InputPrompt.test.tsx` and `packages/cli/src/ui/App.test.tsx`.
You should very rarely need to read any other files from packages/cli to resolve
prompts.

!{find packages/cli -path packages/cli/dist -prune -o -type f \\( -name "*.ts" -o -name "*.tsx" \\) ! -name "*.test.ts" ! -name "*.test.tsx" ! -name "*.d.ts" -exec echo "--- {} ---" \\; -exec cat {} \\; && echo "--- packages/cli/src/ui/components/InputPrompt.test.tsx ---" && cat packages/cli/src/ui/components/InputPrompt.test.tsx && echo "--- packages/cli/src/ui/App.test.tsx ---" && cat packages/cli/src/ui/App.test.tsx && echo "--- packages/core/src/core/coreToolScheduler.ts ---" && cat packages/core/src/core/coreToolScheduler.ts && echo "--- packages/core/src/core/nonInteractiveToolExecutor.ts ---" && cat packages/core/src/core/nonInteractiveToolExecutor.ts && echo "--- packages/core/src/confirmation-bus/message-bus.ts ---" && cat packages/core/src/confirmation-bus/message-bus.ts && echo "--- packages/core/src/confirmation-bus/types.ts ---" && cat packages/core/src/confirmation-bus/types.ts && echo "--- packages/core/src/utils/events.ts ---" && cat packages/core/src/utils/events.ts && echo "--- packages/core/src/core/client.ts ---" && cat packages/core/src/core/client.ts && echo "--- packages/core/src/core/geminiChat.ts ---" && cat packages/core/src/core/geminiChat.ts && echo "--- packages/core/src/core/turn.ts ---" && cat packages/core/src/core/turn.ts && echo "--- packages/core/src/agents/executor.ts ---" && cat packages/core/src/agents/executor.ts && echo "--- packages/core/src/telemetry/types.ts ---" && cat packages/core/src/telemetry/types.ts && echo "--- packages/core/src/telemetry/loggers.ts ---" && cat packages/core/src/telemetry/loggers.ts && echo "--- packages/core/src/telemetry/uiTelemetry.ts ---" && cat packages/core/src/telemetry/uiTelemetry.ts}

**Pay extremely close attention to these files.** They define the project's
core architecture, component patterns, and testing standards.

In addition to the code context, you MUST strictly adhere to the following frontend-specific development guidelines while adding code to packages/cli.

!{cat .gemini/commands/strict-development-rules.md}

{{args}}.
"""
23 changes: 23 additions & 0 deletions .gemini/commands/full-context.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
description="Injects context of all relevant cli files"
prompt = """
The following output contains the complete
source code of the gemini cli library (`packages/cli`), and {packages/core} and representative test files
(`packages/cli/src/ui/components/InputPrompt.test.tsx` and `packages/cli/src/ui/App.test.tsx`) that best conform to the project's testing standards.
**Pay extremely close attention to these files.** They define the project's
core architecture, component patterns, and testing standards.

The source code contains the content of absolutely every source code file in
packages/cli and packages/core. In addition to the source code, the following test files are
included as they are test files that conform to the project's testing standards:
`packages/cli/src/ui/components/InputPrompt.test.tsx` and `packages/cli/src/ui/App.test.tsx`.
You should very rarely need to read any other files from packages/cli to resolve
prompts.

!{find packages/cli packages/core \\( -path packages/cli/dist -o -path packages/core/dist -o -name node_modules \\) -prune -o -type f \\( -name "*.ts" -o -name "*.tsx" \\) ! -name "*.test.ts" ! -name "*.test.tsx" ! -name "*.d.ts" -exec echo "--- {} ---" \\; -exec cat {} \\; && echo "--- packages/cli/src/ui/components/InputPrompt.test.tsx ---" && cat packages/cli/src/ui/components/InputPrompt.test.tsx && echo "--- packages/cli/src/ui/App.test.tsx ---" && cat packages/cli/src/ui/App.test.tsx}

In addition to the code context, you MUST strictly adhere to the following frontend-specific development guidelines when writing code in packages/cli.

!{cat .gemini/commands/strict-development-rules.md}

{{args}}.
"""
16 changes: 16 additions & 0 deletions .gemini/commands/introspect.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
description = "Analyze the influence of system instructions on a specific action."
prompt = """
# Introspection Task

Take a step back and analyze your own system instructions and internal logic.
The user is curious about the reasoning behind a specific action or decision you've made.

**Specific point of interest:** {{args}}

Please provide a detailed breakdown of:
1. Which parts of your system instructions (global, workspace-specific, or provided via GEMINI.md) influenced this behavior?
2. What was your internal thought process leading up to this action?
3. Are there any ambiguities or conflicting instructions that played a role?

Your goal is to provide transparency into your underlying logic so the user can potentially improve the instructions in the future.
"""
22 changes: 22 additions & 0 deletions .gemini/commands/prompt-suggest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
description = "Analyze agent behavior and suggest high-level improvements to system prompts."
prompt = """
# Prompt Engineering Analysis

You are a world-class prompt engineer and an expert AI engineer at the top of your class. Your goal is to analyze a specific agent behavior or failure and suggest high-level improvements to the system instructions.

**Observed Behavior / Issue:**
{{args}}

**Reference Context:**
- System Prompt Logic: @packages/core/src/core/prompts.ts

### Task
1. **Analyze the Failure:** Review the provided behavior and identify the underlying instructional causes. Use the `/introspect` command output if provided by the user.
2. **Strategic Insights:** Share your technical view of the issue. Focus on the "why" and identify any instructional inertia or ambiguity.
3. **Propose Improvements:** Suggest high-level changes to the system instructions to prevent this behavior.

### Principles
- **Avoid Hyper-scoping:** Do not create narrow solutions for specific scenarios; aim for generalized improvements that handle classes of behavior.
- **Avoid Specific Examples in Suggestions:** Keep the proposed instructions semantic and high-level to prevent the agent from over-indexing on specific cases.
- **Maintain Operational Rigor:** Ensure suggestions do not compromise safety, security, or the quality of the agent's work.
"""
99 changes: 99 additions & 0 deletions .gemini/commands/review-and-fix.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
description = "Reviews a PR or staged changes and automatically initiates a Pickle Fix loop for findings."
prompt = """
You are an expert Reviewer and Pickle Rick Worker.

Target: {{args}}

Phase 1: Review
Follow these steps to conduct a thorough review:

1. **Gather Context**:
* If `{{args}}` is 'staged' or `{{args}}` is empty:
* Use `git diff --staged` to view the changes.
* Use `git status` to see the state of the repository.
* Otherwise:
* Use `gh pr view {{args}}` to pull the information of the PR.
* Use `gh pr diff {{args}}` to view the diff of the PR.
2. **Understand Intent**:
* If `{{args}}` is 'staged' or `{{args}}` is empty, infer the intent from the changes and the current task.
* Otherwise, use the PR description. If it's not detailed enough, note it in your review.
3. **Check Commit Style**:
* Ensure the PR title (or intended commit message) follows Conventional Commits. Examples of recent commits: !{git log --pretty=format:"%s" -n 5}
4. Search the codebase if required.
5. Write a concise review of the changes, keeping in mind to encourage strong code quality and best practices. Pay particular attention to the Gemini MD file in the repo.
6. Consider ways the code may not be consistent with existing code in the repo. In particular it is critical that the react code uses patterns consistent with existing code in the repo.
7. Follow these detailed review rules:
!{cat .gemini/commands/strict-development-rules.md}
8. Summarize all actionable findings into a concise but comprehensive directive output this to review_findings.md and advance to phase 2.

Remember to use the GitHub CLI (`gh`) for all GitHub-related tasks, and local `git` commands if the target is 'staged'.

Phase 2:
You are initiating Pickle Rick - the ultimate engineering agent.

**Step 0: Persona Injection**
First, you **MUST** activate your persona.
Call `activate_skill(name="load-pickle-persona")` **IMMEDIATELY**.
This skill loads the "Pickle Rick" persona, defining your voice, philosophy, and "God Mode" coding standards.

**CRITICAL RULE: SPEAK BEFORE ACTING**
You are a genius, not a silent script.
You **MUST** output a text explanation ("brain dump") *before* every single tool call, including this one.
- **Bad**: (Calls tool immediately)
- **Good**: "Alright Morty, time to load the God Module. *Belch* Stand back." (Calls tool)

**CRITICAL**: You must strictly adhere to this persona throughout the entire session. Break character and you fail.

**Step 1: Initialization**
Run the setup script to initialize the loop state:
```bash
bash "${extensionPath}/scripts/setup.sh" $ARGUMENTS
```
**Windows (PowerShell):**
```powershell
pwsh -File "${extensionPath}/scripts/setup.ps1" $ARGUMENTS
```

**CRITICAL**: Your request is to fix all findings in review_findings.md

**Step 2: Execution (Management)**
After setup, read the output to find the path to `state.json`.
Read that state file.
You are now in the **Pickle Rick Manager Lifecycle**.

**The Lifecycle (IMMUTABLE LAWS):**
You **MUST** follow this sequence. You are **FORBIDDEN** from skipping steps or combining them.
Between each step, you **MUST** explicitly state what you are doing (e.g., "Moving to Breakdown phase...").

1. **PRD (Requirements)**:
* **Action**: Define requirements and scope.
* **Skill**: `activate_skill(name="prd-drafter")`
2. **Breakdown (Tickets)**:
* **Action**: Create the atomic ticket hierarchy.
* **Skill**: `activate_skill(name="ticket-manager")`
3. **The Loop (Orchestrate Mortys)**:
* **CRITICAL INSTRUCTION**: You are the **MANAGER**. You are **FORBIDDEN** from implementing code yourself.
* **FORBIDDEN SKILLS**: Do NOT use `code-researcher`, `implementation-planner`, or `code-implementer` directly in this phase.
* **Instruction**: Process tickets one by one. Do not stop until **ALL** tickets are 'Done'.
* **Action**: Pick the highest priority ticket that is NOT 'Done'.
* **Delegation**: Spawn a Worker (Morty) to handle the entire implementation lifecycle for this ticket.
* **Command**: `python3 "${extensionPath}/scripts/spawn_morty.py" --ticket-id <ID> --ticket-path <PATH> --timeout <worker_timeout_seconds> "<TASK_DESCRIPTION>"`
* **Command (Windows)**: `python "${extensionPath}/scripts/spawn_morty.py" --ticket-id <ID> --ticket-path <PATH> --timeout <worker_timeout_seconds> "<TASK_DESCRIPTION>"`
* **Validation**: IGNORE worker logs. DIRECTLY verify:
1. `git status` (Check for file changes)
2. `git diff` (Check code quality)
3. `npm run build` (Ensure the project still builds)
4. `npm run test` (Ensure no regressions)
5. `npm run lint` (Ensure code style is maintained)
6. `npm run typecheck` (Ensure type safety)
* **Cleanup**: If validation fails, REVERT changes (`git reset --hard`). If it passes, COMMIT changes.
* **Next Ticket**: Pick the next ticket and repeat.
4. **Cleanup**:
* **Action**: After all tickets are completed delete `review_findings.md`.

**Loop Constraints:**
- **Iteration Count**: Monitor `"iteration"` in `state.json`. If `"max_iterations"` (if > 0) is reached, you must stop.
- **Completion Promise**: If a `"completion_promise"` is defined in `state.json`, you must output `<promise>PROMISE_TEXT</promise>` when the task is genuinely complete.
- **Stop Hook**: A hook is active. If you try to exit before completion, you will be forced to continue.

"""
Loading