delegate-agent-cli 0.15.0__tar.gz → 0.16.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/CHANGELOG.md +36 -0
  2. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/PKG-INFO +2 -2
  3. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/README.md +1 -1
  4. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/config.example.json +1 -1
  5. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/cli-reference.md +44 -38
  6. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/configuration.md +3 -3
  7. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/troubleshooting.md +1 -1
  8. delegate_agent_cli-0.16.0/examples/task.kimi.json +7 -0
  9. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/pyproject.toml +1 -1
  10. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/__init__.py +1 -1
  11. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/bundled_models.py +2 -1
  12. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/cli.py +4 -3
  13. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/cli_parser.py +12 -4
  14. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/command_help.py +47 -45
  15. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/config.py +1 -1
  16. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/harness_events.py +92 -2
  17. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/request_build.py +9 -4
  18. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/runner.py +281 -158
  19. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/wait_cancel_commands.py +199 -137
  20. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/runtime.py +8 -0
  21. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_execution.py +53 -21
  22. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/PKG-INFO +2 -2
  23. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/SOURCES.txt +2 -0
  24. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_delegate_parser.py +19 -2
  25. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_harness_events.py +342 -0
  26. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_kimi_commands.py +2 -1
  27. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_model_discovery.py +5 -0
  28. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_runner_capture.py +622 -0
  29. delegate_agent_cli-0.16.0/tests/test_tracked_timeout.py +377 -0
  30. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_utility_modules.py +1 -0
  31. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_wait_cancel_commands.py +444 -1
  32. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_workflow_commands.py +15 -0
  33. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/CONTRIBUTING.md +0 -0
  34. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/LICENSE +0 -0
  35. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/MANIFEST.in +0 -0
  36. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/SECURITY.md +0 -0
  37. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/bin/delegate-profile-shim +0 -0
  38. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/bin/delegate.py +0 -0
  39. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/agent-setup.md +0 -0
  40. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/assets/delegate-agent-header.png +0 -0
  41. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/development.md +0 -0
  42. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/live-runtime.md +0 -0
  43. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/publishing-checklist.md +0 -0
  44. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/security-model.md +0 -0
  45. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/docs/worktrees.md +0 -0
  46. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/examples/task.claude.json +0 -0
  47. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/examples/task.codex.json +0 -0
  48. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/examples/task.cursor.json +0 -0
  49. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/examples/task.droid.json +0 -0
  50. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/examples/task.grok.json +0 -0
  51. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/examples/task.judge.json +0 -0
  52. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/setup.cfg +0 -0
  53. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/archived_logs.py +0 -0
  54. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/argv_builders.py +0 -0
  55. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/argv_utils.py +0 -0
  56. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/capability_commands.py +0 -0
  57. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/command_errors.py +0 -0
  58. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/config_commands.py +0 -0
  59. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/constants.py +0 -0
  60. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/describe_payload.py +0 -0
  61. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/errors.py +0 -0
  62. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/git_utils.py +0 -0
  63. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/inspection_commands.py +0 -0
  64. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/isolation.py +0 -0
  65. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/json_types.py +0 -0
  66. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/log_output.py +0 -0
  67. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/model_discovery.py +0 -0
  68. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/private_io.py +0 -0
  69. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/profile_commands.py +0 -0
  70. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/profile_guard.py +0 -0
  71. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/profiles.py +0 -0
  72. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/prompt_instructions.py +0 -0
  73. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/prompt_transport.py +0 -0
  74. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/reasoning.py +0 -0
  75. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/redaction.py +0 -0
  76. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/rendering.py +0 -0
  77. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/request_models.py +0 -0
  78. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/retention.py +0 -0
  79. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/run_metadata.py +0 -0
  80. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/run_output_commands.py +0 -0
  81. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/run_registry.py +0 -0
  82. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/run_status.py +0 -0
  83. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/safe_workspace.py +0 -0
  84. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/seatbelt.py +0 -0
  85. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/snapshot_view.py +0 -0
  86. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/__init__.py +0 -0
  87. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/commands.py +0 -0
  88. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/registry.py +0 -0
  89. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/schema.py +0 -0
  90. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/script.py +0 -0
  91. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_commands.py +0 -0
  92. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_gc.py +0 -0
  93. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_mgmt.py +0 -0
  94. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_records.py +0 -0
  95. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_remove.py +0 -0
  96. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_summary.py +0 -0
  97. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/wsl.py +0 -0
  98. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/dependency_links.txt +0 -0
  99. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/entry_points.txt +0 -0
  100. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/requires.txt +0 -0
  101. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/top_level.txt +0 -0
  102. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_capability_commands.py +0 -0
  103. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_codex_pure_sandbox.py +0 -0
  104. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_command_help.py +0 -0
  105. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_config_commands.py +0 -0
  106. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_delegate_help_cli.py +0 -0
  107. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_delegate_isolation.py +0 -0
  108. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_delegate_validation.py +0 -0
  109. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_end_to_end_tracking.py +0 -0
  110. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_engine_argv.py +0 -0
  111. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_execution_argv_and_prompt.py +0 -0
  112. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_execution_dry_run.py +0 -0
  113. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_execution_worktree_failure_cleanup.py +0 -0
  114. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_execution_worktree_preflight.py +0 -0
  115. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_execution_worktree_run.py +0 -0
  116. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_inspection_commands.py +0 -0
  117. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_model_selection_wave1a.py +0 -0
  118. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_model_selection_wave1b.py +0 -0
  119. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_packaging.py +0 -0
  120. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_profiles.py +0 -0
  121. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_pure_call.py +0 -0
  122. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_reasoning_capabilities.py +0 -0
  123. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_retention.py +0 -0
  124. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_run_registry.py +0 -0
  125. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_safe_workspace_isolation.py +0 -0
  126. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_slash_passthrough.py +0 -0
  127. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_snapshot_redaction.py +0 -0
  128. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_snapshot_rendering.py +0 -0
  129. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_snapshot_run_output.py +0 -0
  130. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_snapshot_view.py +0 -0
  131. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_wave4_launch_features.py +0 -0
  132. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_worktree_list_show.py +0 -0
  133. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_worktree_prune_gc.py +0 -0
  134. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_worktree_remove.py +0 -0
  135. {delegate_agent_cli-0.15.0 → delegate_agent_cli-0.16.0}/tests/test_wsl_guardrails.py +0 -0
@@ -5,6 +5,41 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ## [0.16.0] - 2026-07-16
11
+
12
+ ### Added
13
+
14
+ - `--timeout` is now accepted and enforced on tracked `safe` and `work` runs
15
+ across engines. It remains rejected with `--pass-through`, and deadline
16
+ failures keep the historical `call_timeout` error code.
17
+ - Kimi tool-call activity is normalized into `tool.started`/`tool.completed`
18
+ events with id correlation; `status` stays unset because Kimi tool results
19
+ carry no result-status signal.
20
+
21
+ ### Changed
22
+
23
+ - Persistent-worktree runs that fail after the worktree is realized
24
+ (child-launch errors, timeouts) now keep `worktreeStatus: present`,
25
+ `executionCwd`, `branch`, and `worktreeCleanupCommands` in the failed-run
26
+ record, so the preserved worktree stays inspectable and removable via
27
+ `delegate worktree show|remove` instead of being orphaned.
28
+ - The Kimi default model is now `kimi-code/k3`, and the bundled Kimi catalog
29
+ lists exactly the three real model IDs (`kimi-code/k3`,
30
+ `kimi-code/kimi-for-coding`, `kimi-code/kimi-for-coding-highspeed`); the
31
+ stale `kimi-k2.7` entry was removed.
32
+ - Docs clarifications: Kimi reasoning-effort wording now states that the Kimi
33
+ CLI exposes no effort flag (k3 supports effort internally via
34
+ `~/.kimi-code/config.toml`) and that Delegate rejects `--reasoning-effort`
35
+ for Kimi; the CLI reference notes that `usage: unavailable` in Kimi run JSON
36
+ is expected because the Kimi CLI emits no usage/token lines in stream-json
37
+ output.
38
+ - Kimi work-mode docs restate current behavior: Delegate emits no `--yolo` —
39
+ Kimi prompt mode auto-approves tool actions, and work mode edits the real
40
+ workspace by default. Temporary safe isolation or explicit worktree
41
+ isolation provides a workspace boundary, not a complete host sandbox.
42
+
8
43
  ## [0.15.0] - 2026-07-16
9
44
 
10
45
  ### Added
@@ -390,6 +425,7 @@ Usage-audit fix wave: 82 sessions and 1,241 delegate invocations from one week o
390
425
 
391
426
  - Releases before 0.1.3 predate this changelog.
392
427
 
428
+ [0.16.0]: https://github.com/treygoff24/delegate-agent/compare/v0.15.0...v0.16.0
393
429
  [0.15.0]: https://github.com/treygoff24/delegate-agent/compare/v0.14.0...v0.15.0
394
430
  [0.14.0]: https://github.com/treygoff24/delegate-agent/compare/v0.13.1...v0.14.0
395
431
  [0.13.1]: https://github.com/treygoff24/delegate-agent/compare/v0.13.0...v0.13.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: delegate-agent-cli
3
- Version: 0.15.0
3
+ Version: 0.16.0
4
4
  Summary: A tiny CLI for delegating bounded agent tasks to Cursor, Droid, OpenAI Codex, Claude Code, Grok Build, or Kimi Code runtimes.
5
5
  Author: Trey Goff
6
6
  License-Expression: MIT
@@ -229,7 +229,7 @@ prompt framing, and no session persistence or tools according to the engine
229
229
  capability contract. Claude receives the prompt only on stdin and is
230
230
  schema-capable via `--output-schema`; `delegate --json describe` reports
231
231
  `pureCall`, `structuredOutput`, `noSessionPersistence`, `usageEvents`, and
232
- `promptStdin` per engine. `--timeout SECONDS` applies to every call-mode engine.
232
+ `promptStdin` per engine. `--timeout SECONDS` applies to every engine in any mode (calls and tracked safe/work runs, but not `--pass-through`).
233
233
 
234
234
  For multi-step fan-out or gated review flows, use Delegate Workflows. A workflow
235
235
  is a Python script that launches normal Delegate child runs, journals progress,
@@ -196,7 +196,7 @@ prompt framing, and no session persistence or tools according to the engine
196
196
  capability contract. Claude receives the prompt only on stdin and is
197
197
  schema-capable via `--output-schema`; `delegate --json describe` reports
198
198
  `pureCall`, `structuredOutput`, `noSessionPersistence`, `usageEvents`, and
199
- `promptStdin` per engine. `--timeout SECONDS` applies to every call-mode engine.
199
+ `promptStdin` per engine. `--timeout SECONDS` applies to every engine in any mode (calls and tracked safe/work runs, but not `--pass-through`).
200
200
 
201
201
  For multi-step fan-out or gated review flows, use Delegate Workflows. A workflow
202
202
  is a Python script that launches normal Delegate child runs, journals progress,
@@ -95,7 +95,7 @@
95
95
  },
96
96
  "kimi": {
97
97
  "binary": "kimi",
98
- "defaultModel": "kimi-code/kimi-for-coding",
98
+ "defaultModel": "kimi-code/k3",
99
99
  "defaultReasoningEffort": null
100
100
  },
101
101
  "isolation": {
@@ -20,33 +20,33 @@ Use `delegate --help` for the exact command list from the installed version. Glo
20
20
  ### Direct runtime commands
21
21
 
22
22
  ```bash
23
- delegate cursor safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
24
- delegate cursor work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
25
- delegate cursor call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
23
+ delegate cursor safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
24
+ delegate cursor work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
25
+ delegate cursor call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
26
26
 
27
- delegate droid [MODEL_ALIAS] safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
28
- delegate droid [MODEL_ALIAS] work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
29
- delegate droid [MODEL_ALIAS] call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
27
+ delegate droid [MODEL_ALIAS] safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
28
+ delegate droid [MODEL_ALIAS] work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
29
+ delegate droid [MODEL_ALIAS] call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
30
30
 
31
- delegate codex safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
32
- delegate codex work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
33
- delegate codex call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--prompt-file PATH] [--output-schema FILE] [prompt...]
31
+ delegate codex safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
32
+ delegate codex work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
33
+ delegate codex call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--prompt-file PATH] [--output-schema FILE] [prompt...]
34
34
 
35
- delegate claude safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
36
- delegate claude work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
37
- delegate claude call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
35
+ delegate claude safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
36
+ delegate claude work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
37
+ delegate claude call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
38
38
 
39
- delegate grok safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
40
- delegate grok work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
41
- delegate grok call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
39
+ delegate grok safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
40
+ delegate grok work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
41
+ delegate grok call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
42
42
 
43
- delegate opencode safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
44
- delegate opencode work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
45
- delegate opencode call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--prompt-file PATH] [prompt...]
43
+ delegate opencode safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
44
+ delegate opencode work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
45
+ delegate opencode call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--prompt-file PATH] [prompt...]
46
46
 
47
- delegate kimi safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
48
- delegate kimi work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
49
- delegate kimi call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
47
+ delegate kimi safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
48
+ delegate kimi work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
49
+ delegate kimi call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
50
50
  ```
51
51
 
52
52
  Prompt sources are direct arguments, `--prompt-file`, or Delegate stdin. Raw C0 control characters other than newline, carriage return, and tab are stripped before launch; a prompt that becomes empty fails fast. After
@@ -82,7 +82,7 @@ and advisory catalogs with `delegate models`, `delegate models <engine>`, and
82
82
  `delegate models <engine> --live` (live probes for cursor/droid/devin/opencode; other
83
83
  engines report live unsupported).
84
84
 
85
- `--reasoning-effort LEVEL` is optional and parsed only before prompt text begins. Engines with capability metadata reject unsupported model/effort pairs before launch with `unsupported_reasoning_effort`. It affects only model reasoning depth, cost, or latency; it does not change `safe`/`work`/`call` permissions, sandboxing, approvals, network policy, or edit capability. Cursor effort is model-selection based and requires `cursor.reasoningEffortModels`; an explicit `--model` wins over effort→model routing. Droid emits `--reasoning-effort LEVEL`; Codex emits a `model_reasoning_effort` config override for the resolved model, or for the Codex harness default model when no `codex.defaultModel` is configured and the request was explicit; Claude emits Claude Code `--effort LEVEL`; Grok emits Grok `--effort LEVEL` (`low`, `medium`, `high`, `xhigh`, `max`); OpenCode emits `--variant LEVEL` without validating it against the selected model. Kimi does not support reasoning effort in v1.
85
+ `--reasoning-effort LEVEL` is optional and parsed only before prompt text begins. Engines with capability metadata reject unsupported model/effort pairs before launch with `unsupported_reasoning_effort`. It affects only model reasoning depth, cost, or latency; it does not change `safe`/`work`/`call` permissions, sandboxing, approvals, network policy, or edit capability. Cursor effort is model-selection based and requires `cursor.reasoningEffortModels`; an explicit `--model` wins over effort→model routing. Droid emits `--reasoning-effort LEVEL`; Codex emits a `model_reasoning_effort` config override for the resolved model, or for the Codex harness default model when no `codex.defaultModel` is configured and the request was explicit; Claude emits Claude Code `--effort LEVEL`; Grok emits Grok `--effort LEVEL` (`low`, `medium`, `high`, `xhigh`, `max`); OpenCode emits `--variant LEVEL` without validating it against the selected model. The Kimi CLI exposes no effort flag; k3 supports effort internally via `~/.kimi-code/config.toml`, so Delegate rejects `--reasoning-effort` for Kimi.
86
86
 
87
87
  `--fast` and `--no-fast` are Codex-only, mutually exclusive per-run service-tier overrides. `--fast` emits `service_tier="fast"` plus `features.fast_mode=true` (Codex silently drops a Fast tier when that feature flag is off in the ambient config, so Delegate enables it explicitly); `--no-fast` emits `service_tier="default"` so a globally enabled Fast setting can be turned off for one child. Omitting both emits no override and inherits Codex configuration. Fast is orthogonal to model selection, reasoning effort, and Delegate safety policy. Two upstream caveats: Codex strips the service tier when authenticated with an API key (Fast is a ChatGPT-plan feature), and neither Codex nor the API fails on a tier the model does not offer — Delegate's flag validation is the only fail-closed layer, so an unsupported combination degrades silently to standard routing rather than erroring.
88
88
 
@@ -150,8 +150,8 @@ auth/env selection happens.
150
150
  Usage:
151
151
 
152
152
  ```bash
153
- delegate [--json] [--isolation auto|none|worktree] codex {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
154
- delegate [--json] codex call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--prompt-file PATH] [--output-schema FILE] [prompt...]
153
+ delegate [--json] [--isolation auto|none|worktree] codex {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
154
+ delegate [--json] codex call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--prompt-file PATH] [--output-schema FILE] [prompt...]
155
155
  ```
156
156
 
157
157
  - Safe mode reviews your **current working tree** — uncommitted tracked edits and untracked, non-ignored files are mirrored into an isolated throwaway copy (only gitignored paths are excluded), so you can review local changes without committing first or pasting a diff. Codex safe always uses `--sandbox read-only`. Under `--isolation auto`, Codex safe is the only safe harness that may opt out with `--isolation none`, because Codex still keeps its read-only sandbox active.
@@ -178,8 +178,8 @@ delegate --isolation worktree codex work "Implement the feature in a persistent
178
178
  Usage:
179
179
 
180
180
  ```bash
181
- delegate [--json] [--isolation auto|none|worktree] claude {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
182
- delegate [--json] claude call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
181
+ delegate [--json] [--isolation auto|none|worktree] claude {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
182
+ delegate [--json] claude call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
183
183
  ```
184
184
 
185
185
  - Safe mode reviews your **current working tree** — uncommitted tracked edits and untracked, non-ignored files are mirrored into an isolated throwaway copy (only gitignored paths are excluded), so you can review local changes without committing first or pasting a diff. Under `--isolation auto`, Claude safe uses `--permission-mode plan`, `--strict-mcp-config`, Read/Grep/Glob, and selected read-only Bash tools such as `git diff`/`git status`.
@@ -204,8 +204,8 @@ delegate --isolation worktree claude work "Implement the feature in a persistent
204
204
  Usage:
205
205
 
206
206
  ```bash
207
- delegate [--json] [--isolation auto|none|worktree] grok {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
208
- delegate [--json] grok call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
207
+ delegate [--json] [--isolation auto|none|worktree] grok {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
208
+ delegate [--json] grok call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
209
209
  ```
210
210
 
211
211
  - Safe mode reviews your **current working tree** in an isolated throwaway copy plus Grok read-only controls (`--sandbox read-only`, `--permission-mode dontAsk` by default). Delegate does not use Grok `plan` mode for safe review.
@@ -229,8 +229,8 @@ delegate --isolation worktree grok work "Implement the feature in a persistent w
229
229
  Wraps OpenCode's non-interactive `run` command.
230
230
 
231
231
  ```bash
232
- delegate [--json] [--isolation auto|none|worktree] opencode {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
233
- delegate [--json] opencode call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--prompt-file PATH] [prompt...]
232
+ delegate [--json] [--isolation auto|none|worktree] opencode {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
233
+ delegate [--json] opencode call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--prompt-file PATH] [prompt...]
234
234
  ```
235
235
 
236
236
  - Safe mode reviews the current working tree in an isolated throwaway copy. It
@@ -272,7 +272,8 @@ delegate [--json] opencode call [--read-only] [--model <alias-or-model>] [--reas
272
272
  `workflows.engineCaps` like other engines.
273
273
  - OpenCode currently buffers stdout until completion, so progress can remain
274
274
  silent even though `--print-logs` stderr is visible. Sessions accumulate in
275
- the user's global OpenCode state. Call mode has no Delegate timeout.
275
+ the user's global OpenCode state. Call mode has no Delegate timeout unless
276
+ `--timeout` is set.
276
277
 
277
278
  Examples:
278
279
 
@@ -288,15 +289,16 @@ delegate --isolation worktree opencode work "Implement the feature in a persiste
288
289
  Usage:
289
290
 
290
291
  ```bash
291
- delegate [--json] [--isolation auto|none|worktree] kimi {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
292
- delegate [--json] kimi call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
292
+ delegate [--json] [--isolation auto|none|worktree] kimi {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
293
+ delegate [--json] kimi call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
293
294
  ```
294
295
 
295
296
  - Safe mode reviews your **current working tree** — uncommitted tracked edits and untracked, non-ignored files are mirrored into an isolated throwaway copy (only gitignored paths are excluded), so you can review local changes without committing first or pasting a diff. Under `--isolation auto`, Kimi safe uses a read-only safety prompt. Delegate intentionally avoids Kimi `--plan` in safe mode. Kimi prompt mode auto-approves tool actions, so the isolation is the effective write boundary; the safety prompt is advisory.
296
297
  - Work mode uses Kimi prompt mode and runs in the real workspace unless you opt into worktree isolation. Delegate does not emit `--yolo` because Kimi rejects combining `--yolo` with `--prompt`.
297
298
  - Model selection uses `--model` (alias from `kimi.models` or a raw model ID), the run-input JSON `model`, or `kimi.defaultModel`.
298
- - `--reasoning-effort` is unsupported for Kimi in v1.
299
+ - `--reasoning-effort` is rejected for Kimi: the Kimi CLI exposes no effort flag, and k3 supports effort internally via `~/.kimi-code/config.toml`.
299
300
  - Kimi prompt text is passed via argv.
301
+ - Run JSON reports `usage: unavailable` for Kimi — expected: the Kimi CLI (verified 0.26.0) emits no usage/token lines in stream-json output, so there is nothing to parse.
300
302
 
301
303
  Examples:
302
304
 
@@ -430,11 +432,13 @@ and ambient customization, disables session persistence, and receives the prompt
430
432
  only on stdin. Use `--output-schema FILE` with Claude (schema contents inline)
431
433
  or with ordinary Codex call mode (schema path).
432
434
 
433
- `--timeout SECONDS` is a positive integer available on every call-mode engine.
434
- On expiry Delegate terminates the whole child process group and returns
435
- `call_timeout` with exit code 1.
435
+ `--timeout SECONDS` is a positive integer accepted in every mode. It bounds
436
+ calls and tracked `safe`/`work` runs alike: on expiry Delegate terminates the
437
+ whole child process group and returns `call_timeout` (a historical error-code
438
+ name kept for API stability) with exit code 1. `--timeout` is not supported
439
+ with `--pass-through`, which streams the child without a tracked deadline.
436
440
 
437
- `--read-only`, `--pure`, and `--timeout` apply only to `call`; passing them with
441
+ `--read-only` and `--pure` apply only to `call`; passing them with
438
442
  `safe`/`work` is rejected. Empty-result retry applies to safe runs and read-only
439
443
  calls when the prompt can be safely extended; write-capable, pure, and verbatim
440
444
  calls are not retried.
@@ -579,6 +583,7 @@ Supported input keys:
579
583
  "progress": true,
580
584
  "forbidCommit": true,
581
585
  "includeDirty": true,
586
+ "timeout": 30,
582
587
  "outputSchema": "/path/to/schema.json",
583
588
  "prompt": "Implement the scoped task and report changed files."
584
589
  }
@@ -595,6 +600,7 @@ Supported input keys:
595
600
  - `progress`: optional boolean. `true` enables parent progress heartbeats on stderr; `false` disables them even when `progress.enabled` is true in config. When omitted, config `progress.enabled` applies (default `false`). `mode: "call"` rejects progress.
596
601
  - `forbidCommit`: optional boolean. `true` requires `mode: "work"` with persistent worktree isolation and fails the run if the child creates commits. `mode: "call"` rejects commit policy.
597
602
  - `includeDirty`: optional boolean. `true` requires `mode: "work"` with persistent worktree isolation and syncs tracked edits plus untracked non-ignored files into the new worktree before launch.
603
+ - `timeout`: optional positive integer seconds, with the same semantics as `--timeout`. Non-integer, boolean, or non-positive values fail with `invalid_timeout`; combining it with pass-through is rejected.
598
604
  - `outputSchema`: optional path to a JSON Schema for the final message. Supported for Codex and Claude call mode (same semantics as `--output-schema`). Other engines fail with `unsupported_output_schema`.
599
605
  - `prompt`: required task prompt.
600
606
 
@@ -123,7 +123,7 @@ layers. This is read-only observability; inspecting it does not modify
123
123
  },
124
124
  "kimi": {
125
125
  "binary": "kimi",
126
- "defaultModel": "kimi-code/kimi-for-coding",
126
+ "defaultModel": "kimi-code/k3",
127
127
  "defaultReasoningEffort": null
128
128
  },
129
129
  "workflows": {
@@ -353,7 +353,7 @@ Controls local run recording.
353
353
  {
354
354
  "kimi": {
355
355
  "binary": "kimi",
356
- "defaultModel": "kimi-code/kimi-for-coding",
356
+ "defaultModel": "kimi-code/k3",
357
357
  "defaultReasoningEffort": null,
358
358
  "models": {}
359
359
  }
@@ -361,7 +361,7 @@ Controls local run recording.
361
361
  ```
362
362
 
363
363
  - `binary`: path to the `kimi` executable.
364
- - `defaultModel`: default Kimi model alias (e.g. `kimi-code/kimi-for-coding`). Set to `null` to let Kimi use its own configured default.
364
+ - `defaultModel`: default Kimi model alias (e.g. `kimi-code/k3`). Set to `null` to let Kimi use its own configured default.
365
365
  - `models`: optional map of local aliases to Kimi model IDs for `--model` / JSON `model`. Alias keys must not collide with mode names, equal the engine's own name, or start with `-`.
366
366
  - `defaultReasoningEffort`: not supported in v1; must be `null`.
367
367
  - Kimi's thinking/effort level is configured in `~/.kimi-code/config.toml`, not through Delegate.
@@ -99,7 +99,7 @@ Common causes:
99
99
  - Droid or Codex model support is not in config, the workspace cache, or bundled fallback data.
100
100
  - The effort string is misspelled. Delegate treats labels literally and does not translate between provider naming schemes.
101
101
 
102
- These failures apply to explicit per-run effort (`--reasoning-effort` or JSON run input). For Cursor, Droid, and Codex, a config `defaultReasoningEffort` that cannot be satisfied does not fail the run; the run proceeds without reasoning effort and records a warning in the dry-run payload, manifest, and snapshot. Claude config defaults are validated against its static native labels at config load. Kimi does not support reasoning effort, so `kimi.defaultReasoningEffort` must stay `null`.
102
+ These failures apply to explicit per-run effort (`--reasoning-effort` or JSON run input). For Cursor, Droid, and Codex, a config `defaultReasoningEffort` that cannot be satisfied does not fail the run; the run proceeds without reasoning effort and records a warning in the dry-run payload, manifest, and snapshot. Claude config defaults are validated against its static native labels at config load. For Kimi, `--reasoning-effort` is rejected outright: the Kimi CLI exposes no effort flag (k3 supports effort internally via `~/.kimi-code/config.toml`), so `kimi.defaultReasoningEffort` must stay `null`.
103
103
 
104
104
  For private or newly released models, declare support in `reasoning.capabilities` in config. Inspect first with plain `capabilities`. To refresh workspace-local discovered data, run:
105
105
 
@@ -0,0 +1,7 @@
1
+ {
2
+ "engine": "kimi",
3
+ "mode": "safe",
4
+ "cwd": "/path/to/workspace",
5
+ "isolation": "auto",
6
+ "prompt": "Review this workspace for correctness risks. Do not edit files. Report findings with file, line, severity, and rationale."
7
+ }
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "delegate-agent-cli"
7
- version = "0.15.0"
7
+ version = "0.16.0"
8
8
  description = "A tiny CLI for delegating bounded agent tasks to Cursor, Droid, OpenAI Codex, Claude Code, Grok Build, or Kimi Code runtimes."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,5 +1,5 @@
1
1
  """Delegate Agent CLI package."""
2
2
 
3
- VERSION = "0.15.0"
3
+ VERSION = "0.16.0"
4
4
 
5
5
  __all__ = ["VERSION"]
@@ -70,8 +70,9 @@ BUNDLED_MODELS: dict[str, tuple[BundledModelEntry, ...]] = {
70
70
  {"id": "grok-4.5-fast"},
71
71
  ),
72
72
  "kimi": (
73
+ {"id": "kimi-code/k3"},
73
74
  {"id": "kimi-code/kimi-for-coding"},
74
- {"id": "kimi-k2.7"},
75
+ {"id": "kimi-code/kimi-for-coding-highspeed"},
75
76
  ),
76
77
  "opencode": (
77
78
  {"id": "opencode/claude-opus-4-5"},
@@ -669,7 +669,7 @@ def execute_request(
669
669
  timeout=request.timeout,
670
670
  )
671
671
  except delegate_runner.RunnerLaunchError as exc:
672
- raise DelegateError(exc.error, exc.message) from exc
672
+ raise DelegateError(exc.error, exc.message, exc.exit_code) from exc
673
673
  try:
674
674
  sensitive_texts = [request.prompt]
675
675
  if "--json-schema" in request.argv:
@@ -802,7 +802,7 @@ def execute_request(
802
802
  )
803
803
  )
804
804
  except worktree_execution.PersistentWorktreeError as exc:
805
- raise DelegateError(exc.error, exc.message) from exc
805
+ raise DelegateError(exc.error, exc.message, exc.exit_code) from exc
806
806
 
807
807
  with safe_isolated_request(request) as isolated_request:
808
808
  _set_child_root_env(isolated_request, source_workspace)
@@ -879,9 +879,10 @@ def execute_request(
879
879
  progress=isolated_request.progress,
880
880
  progress_initial_delay_sec=isolated_request.progress_initial_delay_sec,
881
881
  progress_interval_sec=isolated_request.progress_interval_sec,
882
+ timeout=isolated_request.timeout,
882
883
  )
883
884
  except delegate_runner.RunnerLaunchError as exc:
884
- raise DelegateError(exc.error, exc.message) from exc
885
+ raise DelegateError(exc.error, exc.message, exc.exit_code) from exc
885
886
 
886
887
 
887
888
  def shell_join(argv: list[str]) -> str:
@@ -727,8 +727,12 @@ def parse_modeless_engine(
727
727
  if fast is not None and engine != "codex":
728
728
  raise DelegateError("unsupported_fast", "--fast and --no-fast are only supported by codex.")
729
729
  _validate_pure_options(engine, mode, pure=pure, read_only=read_only, group=group)
730
- if timeout is not None and mode != "call":
731
- raise DelegateError("invalid_option_combination", "--timeout only applies to call mode.")
730
+ if timeout is not None and pass_through:
731
+ raise DelegateError(
732
+ "invalid_option_combination",
733
+ "--timeout is not supported with --pass-through; "
734
+ "pass-through runs have no tracked deadline.",
735
+ )
732
736
  forbid_commit_implied_isolation = False
733
737
  if forbid_commit and mode == "work" and isolation is None:
734
738
  isolation = "worktree"
@@ -848,8 +852,12 @@ def parse_droid(
848
852
  if fast is not None:
849
853
  raise DelegateError("unsupported_fast", "--fast and --no-fast are only supported by codex.")
850
854
  _validate_pure_options("droid", mode, pure=pure, read_only=read_only, group=group)
851
- if timeout is not None and mode != "call":
852
- raise DelegateError("invalid_option_combination", "--timeout only applies to call mode.")
855
+ if timeout is not None and pass_through:
856
+ raise DelegateError(
857
+ "invalid_option_combination",
858
+ "--timeout is not supported with --pass-through; "
859
+ "pass-through runs have no tracked deadline.",
860
+ )
853
861
  forbid_commit_implied_isolation = False
854
862
  if forbid_commit and mode == "work" and isolation is None:
855
863
  isolation = "worktree"