delegate-agent-cli 0.11.0__tar.gz → 0.12.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.
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/CHANGELOG.md +47 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/PKG-INFO +52 -10
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/README.md +51 -9
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/config.example.json +5 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/cli-reference.md +105 -28
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/configuration.md +71 -3
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/publishing-checklist.md +4 -2
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/pyproject.toml +1 -1
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/__init__.py +1 -1
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/argv_builders.py +36 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/argv_utils.py +1 -0
- delegate_agent_cli-0.12.0/src/delegate_agent/bundled_models.py +76 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/cli.py +134 -7
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/cli_parser.py +271 -19
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/command_help.py +259 -55
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/config.py +103 -9
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/constants.py +20 -7
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/describe_payload.py +311 -31
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/harness_events.py +32 -1
- delegate_agent_cli-0.12.0/src/delegate_agent/model_discovery.py +365 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/profile_guard.py +8 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/prompt_instructions.py +11 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/prompt_transport.py +2 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/reasoning.py +86 -6
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/request_build.py +384 -82
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/request_models.py +13 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/run_registry.py +1 -1
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/runner.py +57 -16
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/safe_workspace.py +5 -0
- delegate_agent_cli-0.12.0/src/delegate_agent/workflows/__init__.py +5 -0
- delegate_agent_cli-0.12.0/src/delegate_agent/workflows/commands.py +634 -0
- delegate_agent_cli-0.12.0/src/delegate_agent/workflows/registry.py +178 -0
- delegate_agent_cli-0.12.0/src/delegate_agent/workflows/runtime.py +1490 -0
- delegate_agent_cli-0.12.0/src/delegate_agent/workflows/schema.py +146 -0
- delegate_agent_cli-0.12.0/src/delegate_agent/workflows/script.py +198 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/worktree_execution.py +7 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent_cli.egg-info/PKG-INFO +52 -10
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent_cli.egg-info/SOURCES.txt +13 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_capability_commands.py +5 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_command_help.py +2 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_delegate_help_cli.py +13 -5
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_delegate_parser.py +22 -1
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_delegate_validation.py +1 -1
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_engine_argv.py +102 -1
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_harness_events.py +17 -0
- delegate_agent_cli-0.12.0/tests/test_model_discovery.py +542 -0
- delegate_agent_cli-0.12.0/tests/test_model_selection_wave1a.py +285 -0
- delegate_agent_cli-0.12.0/tests/test_model_selection_wave1b.py +796 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_reasoning_capabilities.py +34 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_runner_capture.py +89 -0
- delegate_agent_cli-0.12.0/tests/test_slash_passthrough.py +211 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_utility_modules.py +8 -0
- delegate_agent_cli-0.12.0/tests/test_workflow_commands.py +1696 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/CONTRIBUTING.md +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/LICENSE +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/MANIFEST.in +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/SECURITY.md +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/bin/delegate-profile-shim +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/bin/delegate.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/agent-setup.md +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/assets/delegate-agent-header.png +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/development.md +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/live-runtime.md +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/security-model.md +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/troubleshooting.md +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/docs/worktrees.md +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/examples/task.claude.json +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/examples/task.codex.json +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/examples/task.cursor.json +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/examples/task.droid.json +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/examples/task.grok.json +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/examples/task.judge.json +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/setup.cfg +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/archived_logs.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/capability_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/command_errors.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/config_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/errors.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/git_utils.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/inspection_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/isolation.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/json_types.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/log_output.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/private_io.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/profile_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/profiles.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/redaction.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/rendering.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/retention.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/run_metadata.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/run_output_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/run_status.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/snapshot_view.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/wait_cancel_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/worktree_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/worktree_gc.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/worktree_mgmt.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/worktree_records.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/worktree_remove.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/worktree_summary.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent/wsl.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent_cli.egg-info/dependency_links.txt +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent_cli.egg-info/entry_points.txt +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent_cli.egg-info/requires.txt +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/src/delegate_agent_cli.egg-info/top_level.txt +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_config_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_delegate_isolation.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_end_to_end_tracking.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_execution_argv_and_prompt.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_execution_dry_run.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_execution_worktree_failure_cleanup.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_execution_worktree_preflight.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_execution_worktree_run.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_inspection_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_kimi_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_packaging.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_profiles.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_retention.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_run_registry.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_safe_workspace_isolation.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_snapshot_redaction.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_snapshot_rendering.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_snapshot_run_output.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_snapshot_view.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_wait_cancel_commands.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_wave4_launch_features.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_worktree_list_show.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_worktree_prune_gc.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_worktree_remove.py +0 -0
- {delegate_agent_cli-0.11.0 → delegate_agent_cli-0.12.0}/tests/test_wsl_guardrails.py +0 -0
|
@@ -5,6 +5,48 @@ 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
|
+
## [0.12.0] - 2026-07-09
|
|
9
|
+
|
|
10
|
+
Three features in one train: Delegate Workflows (multi-agent orchestration with durable resume), per-run model selection + discovery across all seven engines, and the Devin engine. Model selection was built as the inaugural Delegate Workflows dogfood: three implementation waves plus a twelve-round two-lane adversarial review loop driven through `workflow run --resume`.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Per-run model selection: every engine accepts `--model <alias-or-id>` (alias
|
|
15
|
+
from `<engine>.models`, or a raw model ID passed through verbatim). Alias maps
|
|
16
|
+
are generalized beyond Droid to all engines; Droid keeps its optional
|
|
17
|
+
positional alias and gains optional `droid.defaultModel`. `delegate models
|
|
18
|
+
<engine>` merges bundled + config catalogs; `--live` probes cursor/droid/devin
|
|
19
|
+
when available. Non-droid aliases also appear in `models` / `models --summary`.
|
|
20
|
+
- Delegate Workflows: a Python DSL supervisor for multi-agent fan-out, durable
|
|
21
|
+
journaling, nested workflow calls, schema-validated `agent()` results,
|
|
22
|
+
approval gates, resume, kill, saved workflows, and workflow discovery in
|
|
23
|
+
`describe`/help/docs. Status/list report `stalled` when a supervisor died
|
|
24
|
+
without finalizing (non-blocking lock probe; `wait`/`watch` exit instead of
|
|
25
|
+
hanging), and supervisor failures record a traceback tail in the journal,
|
|
26
|
+
result, and status.
|
|
27
|
+
- Slash pass-through: launch prompts that intentionally start with a harness
|
|
28
|
+
slash command can be sent verbatim when the target mode's safety boundary does
|
|
29
|
+
not depend on Delegate's prompt preamble. `--pass-through` also suppresses the
|
|
30
|
+
skill preamble and completion-report suffix while preserving safe-mode
|
|
31
|
+
boundaries.
|
|
32
|
+
- Added `devin` as a first-class engine for Cognition's Devin CLI across
|
|
33
|
+
`safe`, `work`, and `call` modes. Devin uses prompt-file transport,
|
|
34
|
+
config-driven model selection (`devin.defaultModel`, default `swe-1.7`),
|
|
35
|
+
read-only safe/call enforcement through a Delegate-generated
|
|
36
|
+
`--agent-config`, and `--permission-mode dangerous` for work/default-call
|
|
37
|
+
print-mode runs.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- Config migration: a `<engine>.models` alias key named after a mode (`safe`,
|
|
42
|
+
`work`, or `call`) or after its own engine is now a config validation error —
|
|
43
|
+
rename the alias (aliases naming a *different* engine, like a `droid.models`
|
|
44
|
+
alias called `grok`, remain valid). Cursor input-JSON `"model"` values that differ from
|
|
45
|
+
`cursor.defaultModel` are now honored instead of rejected. Droid run-input
|
|
46
|
+
JSON `"model"` is now alias-or-id like `--model`: a `droid.models` key keeps
|
|
47
|
+
alias semantics, anything else passes through verbatim to the harness
|
|
48
|
+
(previously a hard `invalid_alias` error).
|
|
49
|
+
|
|
8
50
|
## [0.11.0] - 2026-07-05
|
|
9
51
|
|
|
10
52
|
Profile-guard calibration fix for issue #9: a shell carrying `AI_PROFILE=work|personal` with no matching `~/.delegate/config.<profile>.json` no longer presents a half-configured install as a total CLI outage.
|
|
@@ -21,6 +63,11 @@ Profile-guard calibration fix for issue #9: a shell carrying `AI_PROFILE=work|pe
|
|
|
21
63
|
|
|
22
64
|
- The fail-closed profile-crossover guarantee is now enforced inside the Python CLI (`delegate_agent.cli:main` via the new `delegate_agent.profile_guard`), classifying from the real parsed command rather than positional argv guessing. This closes a gap where the guarantee lived only in the optional shell shim: the pip console script, `python -m delegate_agent.cli`, and `bin/delegate.py` all reach `main` with no shim in front, and previously fell through to the base account on a missing overlay. The guard no-ops when `DELEGATE_CONFIG` is already exported (shim precedence) so the two layers compose without a double check. The tracked `bin/delegate-profile-shim` template applies the same check before Python starts, as an additional early gate; it scans all args for `capabilities refresh` so a mutation is never misclassified as a read-only probe.
|
|
23
65
|
|
|
66
|
+
### Packaging
|
|
67
|
+
|
|
68
|
+
- Published to PyPI as `delegate-agent-cli`: PyPI's separator-stripped name-similarity rule blocked the shorter `delegate-agent` (an existing `DelegateAgent` project collides). The installed console script is still `delegate`; only the `pip install` name changed.
|
|
69
|
+
- Hardened two tests (`test_execution_argv_and_prompt.py`, `test_wait_cancel_commands.py`) that raced child-process teardown against the isolation and cleanup assertions they were checking, which showed up as intermittent failures on the publish gate.
|
|
70
|
+
|
|
24
71
|
## [0.10.0] - 2026-07-04
|
|
25
72
|
|
|
26
73
|
Usage-audit fix wave: 82 sessions and 1,241 delegate invocations from one week of agent usage were mined for friction and failure modes, and the whole Tier 1–3 backlog was built across four decorrelated implementation waves plus live acceptance.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: delegate-agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.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
|
|
@@ -37,7 +37,7 @@ Dynamic: license-file
|
|
|
37
37
|
|
|
38
38
|
# Delegate Agent
|
|
39
39
|
|
|
40
|
-
Delegate Agent is a small CLI for handing a bounded task to another coding-agent runtime. It normalizes common calls to Cursor Agent, Factory Droid, OpenAI Codex, Claude Code, and Kimi Code so humans or other agents can launch review, investigation, and implementation jobs without remembering each tool's flags.
|
|
40
|
+
Delegate Agent is a small CLI for handing a bounded task to another coding-agent runtime. It normalizes common calls to Cursor Agent, Factory Droid, OpenAI Codex, Claude Code, Grok Build, Devin, and Kimi Code so humans or other agents can launch review, investigation, and implementation jobs without remembering each tool's flags.
|
|
41
41
|
|
|
42
42
|
Use it when you want a predictable wrapper around prompts like:
|
|
43
43
|
|
|
@@ -48,18 +48,30 @@ Use it when you want a predictable wrapper around prompts like:
|
|
|
48
48
|
Delegate does **not** commit, push, merge, deploy, publish, or run a background service. It builds the child command, adds safety framing, launches the selected runtime, and records local run metadata for later inspection.
|
|
49
49
|
|
|
50
50
|
Prompt handling is provider-specific: Codex and Claude prompts are delivered to the child
|
|
51
|
-
runtime over stdin; Droid prompts are delivered through
|
|
52
|
-
prompt
|
|
51
|
+
runtime over stdin; Droid, Grok, and Devin prompts are delivered through private
|
|
52
|
+
temporary prompt files; Cursor Agent and Kimi Code currently
|
|
53
53
|
require prompt argv. Delegate redacts Cursor and Kimi prompt argv in dry-run
|
|
54
54
|
output and run manifests, but true process-argv hiding for those harnesses
|
|
55
55
|
depends on the child CLIs exposing stdin or prompt-file transport.
|
|
56
56
|
|
|
57
|
-
## Install
|
|
57
|
+
## Install
|
|
58
58
|
|
|
59
|
-
Delegate requires Python 3.11 or newer.
|
|
59
|
+
Delegate requires Python 3.11 or newer. The PyPI package is named `delegate-agent-cli` (PyPI's name-similarity rule blocked the shorter `delegate-agent`), but it installs the same `delegate` command either way.
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
|
|
62
|
+
uv tool install delegate-agent-cli
|
|
63
|
+
# or
|
|
64
|
+
pipx install delegate-agent-cli
|
|
65
|
+
# or
|
|
66
|
+
pip install delegate-agent-cli
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Install from source
|
|
70
|
+
|
|
71
|
+
For the latest unreleased code, or to contribute:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
python3 -m pip install "delegate-agent-cli @ git+https://github.com/treygoff24/delegate-agent.git"
|
|
63
75
|
```
|
|
64
76
|
|
|
65
77
|
For local development or a checkout-only smoke test:
|
|
@@ -85,6 +97,7 @@ command -v droid # Factory Droid CLI, used by delegate droid ...
|
|
|
85
97
|
command -v codex # OpenAI Codex CLI, used by delegate codex ...
|
|
86
98
|
command -v claude # Claude Code CLI, used by delegate claude ...
|
|
87
99
|
command -v grok # xAI Grok Build CLI, used by delegate grok ...
|
|
100
|
+
command -v devin # Cognition Devin CLI, used by delegate devin ...
|
|
88
101
|
command -v kimi # Kimi Code CLI, used by delegate kimi ...
|
|
89
102
|
```
|
|
90
103
|
|
|
@@ -110,6 +123,8 @@ delegate --json describe --summary
|
|
|
110
123
|
delegate --json models --summary
|
|
111
124
|
delegate --json describe
|
|
112
125
|
delegate --json models
|
|
126
|
+
delegate --json models codex # per-engine advisory catalog
|
|
127
|
+
delegate --json models cursor --live # merge live harness probe when supported
|
|
113
128
|
delegate --json capabilities
|
|
114
129
|
```
|
|
115
130
|
|
|
@@ -141,6 +156,7 @@ Run a read-only review in an isolated throwaway workspace:
|
|
|
141
156
|
delegate codex safe "Review this repository for correctness risks. Do not edit files."
|
|
142
157
|
delegate claude safe "Review this repository for correctness risks. Do not edit files."
|
|
143
158
|
delegate grok safe "Review this repository for correctness risks. Do not edit files."
|
|
159
|
+
delegate devin safe "Review this repository for correctness risks. Do not edit files."
|
|
144
160
|
delegate cursor safe "Review the current diff for regressions. Do not edit files."
|
|
145
161
|
delegate kimi safe "Review this repository for regressions. Do not edit files."
|
|
146
162
|
```
|
|
@@ -157,9 +173,20 @@ Run an edit-capable task in a workspace you trust:
|
|
|
157
173
|
```bash
|
|
158
174
|
delegate cursor work "Fix the parser bug. Run python3 -m unittest tests.test_delegate_parser. Report changed files."
|
|
159
175
|
delegate claude work "Implement the scoped change and run the named check. Report changed files."
|
|
176
|
+
delegate devin work "Implement the scoped change and run the named check. Report changed files."
|
|
160
177
|
delegate kimi work "Implement the scoped change and run the named check. Report changed files."
|
|
161
178
|
```
|
|
162
179
|
|
|
180
|
+
Pin a model per run with `--model` (config alias from `<engine>.models`, or a
|
|
181
|
+
raw model ID passed through verbatim). Droid still accepts a positional alias;
|
|
182
|
+
`--model` works on every engine, including Droid:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
delegate devin safe --model claude-fable-5 "Review this repository. Do not edit files."
|
|
186
|
+
delegate droid work --model custom:my-model "Implement the scoped change."
|
|
187
|
+
delegate --json dry-run codex safe --model fast "Review this repository. Do not edit files."
|
|
188
|
+
```
|
|
189
|
+
|
|
163
190
|
For long foreground runs, add `--progress` to emit bounded parent heartbeats to
|
|
164
191
|
stderr while keeping final stdout machine-readable, or set `progress.enabled`
|
|
165
192
|
to `true` in config. Use `--no-progress` to override config for one launch.
|
|
@@ -187,7 +214,20 @@ run, use stateless `call` mode:
|
|
|
187
214
|
delegate --json codex call "Summarize this context in three bullets."
|
|
188
215
|
```
|
|
189
216
|
|
|
190
|
-
|
|
217
|
+
For multi-step fan-out or gated review flows, use Delegate Workflows. A workflow
|
|
218
|
+
is a Python script that launches normal Delegate child runs, journals progress,
|
|
219
|
+
can pause on approval gates, and can resume from cached child results:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
python3 bin/delegate.py workflow check review.py
|
|
223
|
+
python3 bin/delegate.py --json workflow run review.py --args '{"files":["src/cli.py"]}' --budget 10
|
|
224
|
+
python3 bin/delegate.py workflow approve wf_0123abcdef45
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
See [Delegate Workflows](docs/delegate-workflows.md) for the DSL, safety
|
|
228
|
+
limits, config, and gate semantics.
|
|
229
|
+
|
|
230
|
+
Reasoning effort is provider-aware. Unsupported combinations fail before launch. It changes only the requested model thinking depth/cost/latency; it does not change safe/work/call mode, sandboxing, approvals, or edit capability. Codex/Droid validate effort against model capability metadata, Cursor maps effort to configured model selection, Claude maps to Claude Code `--effort`, and Grok maps to Grok `--effort` (`low`, `medium`, `high`, `xhigh`, `max`). Devin and Kimi do not expose a Delegate reasoning-effort flag. Explicit Codex effort can target the harness default model even when `codex.defaultModel` is unset:
|
|
191
231
|
|
|
192
232
|
```bash
|
|
193
233
|
delegate --json dry-run codex safe --reasoning-effort high "Review this repository. Do not edit files."
|
|
@@ -251,8 +291,9 @@ Delegate separates three ideas:
|
|
|
251
291
|
|
|
252
292
|
Defaults are intentionally conservative for review paths:
|
|
253
293
|
|
|
254
|
-
- `delegate cursor safe`, `delegate codex safe`, `delegate claude safe`, `delegate grok safe`, `delegate droid ALIAS safe`, and `delegate kimi safe` run in an isolated throwaway workspace. 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.
|
|
294
|
+
- `delegate cursor safe`, `delegate codex safe`, `delegate claude safe`, `delegate grok safe`, `delegate devin safe`, `delegate droid ALIAS safe`, and `delegate kimi safe` run in an isolated throwaway workspace. 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.
|
|
255
295
|
- Grok safe mode uses Delegate isolated copy plus Grok read-only sandbox/permission controls (`--sandbox read-only`, `--permission-mode dontAsk` by default). It does not use Grok `plan` mode. Prompts are delivered via Grok `--prompt-file` from a Delegate temp file.
|
|
296
|
+
- Devin safe mode uses Delegate isolated copy plus a Delegate-generated `--agent-config` deny-list for edit/write/exec and `mcp__*`, with Devin `--permission-mode auto`. Work mode uses Devin `--permission-mode dangerous` because Devin print mode rejects unapproved edit/exec tools.
|
|
256
297
|
- Claude safe mode invokes `claude -p` with prompt text on stdin, `--permission-mode plan`, `--strict-mcp-config`, Read/Grep/Glob plus selected read-only Bash tools, and `--no-session-persistence` by default. Delegate does not currently prove that Claude Code hooks, plugins, user settings, or other non-MCP customization surfaces are disabled.
|
|
257
298
|
- `work` mode can edit. By default it runs in the real workspace for backward compatibility.
|
|
258
299
|
|
|
@@ -279,7 +320,7 @@ To carry uncommitted local work into the worktree instead of stashing it, add
|
|
|
279
320
|
the worktree through the same snapshot primitives as safe mode, and tears the
|
|
280
321
|
worktree down before launching the child if that sync fails.
|
|
281
322
|
|
|
282
|
-
Safe isolation and `--include-dirty` recreate an untracked symlink only when it is relative, resolves inside the source workspace, and its target is not gitignored; any symlink that fails those checks — an absolute target, an escape out of the tree, or a target that is itself a gitignored secret — is replaced with an inert placeholder file, failing closed on any ambiguity. Delegate reports a warning listing the symlink paths it blocked. In Git repositories with no commits yet, Cursor/Codex/Claude/Droid/Kimi safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
|
|
323
|
+
Safe isolation and `--include-dirty` recreate an untracked symlink only when it is relative, resolves inside the source workspace, and its target is not gitignored; any symlink that fails those checks — an absolute target, an escape out of the tree, or a target that is itself a gitignored secret — is replaced with an inert placeholder file, failing closed on any ambiguity. Delegate reports a warning listing the symlink paths it blocked. In Git repositories with no commits yet, Cursor/Codex/Claude/Droid/Grok/Devin/Kimi safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
|
|
283
324
|
|
|
284
325
|
Snapshots and `run-output` redact common credential shapes by default, including authorization headers, bearer/basic tokens, JWT-like strings, and common `token=` / `api_key=` / `password=` values. Use `--no-redact` only when exact output is necessary and safe to display.
|
|
285
326
|
|
|
@@ -311,6 +352,7 @@ AI_PROFILE delegate ...` uses the base config, or set
|
|
|
311
352
|
- [Agent setup](docs/agent-setup.md): human and non-interactive setup flows.
|
|
312
353
|
- [CLI reference](docs/cli-reference.md): commands, exit codes, and JSON contracts.
|
|
313
354
|
- [Configuration](docs/configuration.md): config precedence, sections, and provider-neutral aliases.
|
|
355
|
+
- [Delegate Workflows](docs/delegate-workflows.md): workflow DSL, caps, config, and gate semantics.
|
|
314
356
|
- [Security model](docs/security-model.md): boundaries, limitations, and safe usage.
|
|
315
357
|
- [Worktrees](docs/worktrees.md): persistent-worktree lifecycle and cleanup.
|
|
316
358
|
- [Troubleshooting](docs/troubleshooting.md): common failures and checks.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Delegate Agent
|
|
6
6
|
|
|
7
|
-
Delegate Agent is a small CLI for handing a bounded task to another coding-agent runtime. It normalizes common calls to Cursor Agent, Factory Droid, OpenAI Codex, Claude Code, and Kimi Code so humans or other agents can launch review, investigation, and implementation jobs without remembering each tool's flags.
|
|
7
|
+
Delegate Agent is a small CLI for handing a bounded task to another coding-agent runtime. It normalizes common calls to Cursor Agent, Factory Droid, OpenAI Codex, Claude Code, Grok Build, Devin, and Kimi Code so humans or other agents can launch review, investigation, and implementation jobs without remembering each tool's flags.
|
|
8
8
|
|
|
9
9
|
Use it when you want a predictable wrapper around prompts like:
|
|
10
10
|
|
|
@@ -15,18 +15,30 @@ Use it when you want a predictable wrapper around prompts like:
|
|
|
15
15
|
Delegate does **not** commit, push, merge, deploy, publish, or run a background service. It builds the child command, adds safety framing, launches the selected runtime, and records local run metadata for later inspection.
|
|
16
16
|
|
|
17
17
|
Prompt handling is provider-specific: Codex and Claude prompts are delivered to the child
|
|
18
|
-
runtime over stdin; Droid prompts are delivered through
|
|
19
|
-
prompt
|
|
18
|
+
runtime over stdin; Droid, Grok, and Devin prompts are delivered through private
|
|
19
|
+
temporary prompt files; Cursor Agent and Kimi Code currently
|
|
20
20
|
require prompt argv. Delegate redacts Cursor and Kimi prompt argv in dry-run
|
|
21
21
|
output and run manifests, but true process-argv hiding for those harnesses
|
|
22
22
|
depends on the child CLIs exposing stdin or prompt-file transport.
|
|
23
23
|
|
|
24
|
-
## Install
|
|
24
|
+
## Install
|
|
25
25
|
|
|
26
|
-
Delegate requires Python 3.11 or newer.
|
|
26
|
+
Delegate requires Python 3.11 or newer. The PyPI package is named `delegate-agent-cli` (PyPI's name-similarity rule blocked the shorter `delegate-agent`), but it installs the same `delegate` command either way.
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
|
|
29
|
+
uv tool install delegate-agent-cli
|
|
30
|
+
# or
|
|
31
|
+
pipx install delegate-agent-cli
|
|
32
|
+
# or
|
|
33
|
+
pip install delegate-agent-cli
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Install from source
|
|
37
|
+
|
|
38
|
+
For the latest unreleased code, or to contribute:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
python3 -m pip install "delegate-agent-cli @ git+https://github.com/treygoff24/delegate-agent.git"
|
|
30
42
|
```
|
|
31
43
|
|
|
32
44
|
For local development or a checkout-only smoke test:
|
|
@@ -52,6 +64,7 @@ command -v droid # Factory Droid CLI, used by delegate droid ...
|
|
|
52
64
|
command -v codex # OpenAI Codex CLI, used by delegate codex ...
|
|
53
65
|
command -v claude # Claude Code CLI, used by delegate claude ...
|
|
54
66
|
command -v grok # xAI Grok Build CLI, used by delegate grok ...
|
|
67
|
+
command -v devin # Cognition Devin CLI, used by delegate devin ...
|
|
55
68
|
command -v kimi # Kimi Code CLI, used by delegate kimi ...
|
|
56
69
|
```
|
|
57
70
|
|
|
@@ -77,6 +90,8 @@ delegate --json describe --summary
|
|
|
77
90
|
delegate --json models --summary
|
|
78
91
|
delegate --json describe
|
|
79
92
|
delegate --json models
|
|
93
|
+
delegate --json models codex # per-engine advisory catalog
|
|
94
|
+
delegate --json models cursor --live # merge live harness probe when supported
|
|
80
95
|
delegate --json capabilities
|
|
81
96
|
```
|
|
82
97
|
|
|
@@ -108,6 +123,7 @@ Run a read-only review in an isolated throwaway workspace:
|
|
|
108
123
|
delegate codex safe "Review this repository for correctness risks. Do not edit files."
|
|
109
124
|
delegate claude safe "Review this repository for correctness risks. Do not edit files."
|
|
110
125
|
delegate grok safe "Review this repository for correctness risks. Do not edit files."
|
|
126
|
+
delegate devin safe "Review this repository for correctness risks. Do not edit files."
|
|
111
127
|
delegate cursor safe "Review the current diff for regressions. Do not edit files."
|
|
112
128
|
delegate kimi safe "Review this repository for regressions. Do not edit files."
|
|
113
129
|
```
|
|
@@ -124,9 +140,20 @@ Run an edit-capable task in a workspace you trust:
|
|
|
124
140
|
```bash
|
|
125
141
|
delegate cursor work "Fix the parser bug. Run python3 -m unittest tests.test_delegate_parser. Report changed files."
|
|
126
142
|
delegate claude work "Implement the scoped change and run the named check. Report changed files."
|
|
143
|
+
delegate devin work "Implement the scoped change and run the named check. Report changed files."
|
|
127
144
|
delegate kimi work "Implement the scoped change and run the named check. Report changed files."
|
|
128
145
|
```
|
|
129
146
|
|
|
147
|
+
Pin a model per run with `--model` (config alias from `<engine>.models`, or a
|
|
148
|
+
raw model ID passed through verbatim). Droid still accepts a positional alias;
|
|
149
|
+
`--model` works on every engine, including Droid:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
delegate devin safe --model claude-fable-5 "Review this repository. Do not edit files."
|
|
153
|
+
delegate droid work --model custom:my-model "Implement the scoped change."
|
|
154
|
+
delegate --json dry-run codex safe --model fast "Review this repository. Do not edit files."
|
|
155
|
+
```
|
|
156
|
+
|
|
130
157
|
For long foreground runs, add `--progress` to emit bounded parent heartbeats to
|
|
131
158
|
stderr while keeping final stdout machine-readable, or set `progress.enabled`
|
|
132
159
|
to `true` in config. Use `--no-progress` to override config for one launch.
|
|
@@ -154,7 +181,20 @@ run, use stateless `call` mode:
|
|
|
154
181
|
delegate --json codex call "Summarize this context in three bullets."
|
|
155
182
|
```
|
|
156
183
|
|
|
157
|
-
|
|
184
|
+
For multi-step fan-out or gated review flows, use Delegate Workflows. A workflow
|
|
185
|
+
is a Python script that launches normal Delegate child runs, journals progress,
|
|
186
|
+
can pause on approval gates, and can resume from cached child results:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
python3 bin/delegate.py workflow check review.py
|
|
190
|
+
python3 bin/delegate.py --json workflow run review.py --args '{"files":["src/cli.py"]}' --budget 10
|
|
191
|
+
python3 bin/delegate.py workflow approve wf_0123abcdef45
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
See [Delegate Workflows](docs/delegate-workflows.md) for the DSL, safety
|
|
195
|
+
limits, config, and gate semantics.
|
|
196
|
+
|
|
197
|
+
Reasoning effort is provider-aware. Unsupported combinations fail before launch. It changes only the requested model thinking depth/cost/latency; it does not change safe/work/call mode, sandboxing, approvals, or edit capability. Codex/Droid validate effort against model capability metadata, Cursor maps effort to configured model selection, Claude maps to Claude Code `--effort`, and Grok maps to Grok `--effort` (`low`, `medium`, `high`, `xhigh`, `max`). Devin and Kimi do not expose a Delegate reasoning-effort flag. Explicit Codex effort can target the harness default model even when `codex.defaultModel` is unset:
|
|
158
198
|
|
|
159
199
|
```bash
|
|
160
200
|
delegate --json dry-run codex safe --reasoning-effort high "Review this repository. Do not edit files."
|
|
@@ -218,8 +258,9 @@ Delegate separates three ideas:
|
|
|
218
258
|
|
|
219
259
|
Defaults are intentionally conservative for review paths:
|
|
220
260
|
|
|
221
|
-
- `delegate cursor safe`, `delegate codex safe`, `delegate claude safe`, `delegate grok safe`, `delegate droid ALIAS safe`, and `delegate kimi safe` run in an isolated throwaway workspace. 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.
|
|
261
|
+
- `delegate cursor safe`, `delegate codex safe`, `delegate claude safe`, `delegate grok safe`, `delegate devin safe`, `delegate droid ALIAS safe`, and `delegate kimi safe` run in an isolated throwaway workspace. 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.
|
|
222
262
|
- Grok safe mode uses Delegate isolated copy plus Grok read-only sandbox/permission controls (`--sandbox read-only`, `--permission-mode dontAsk` by default). It does not use Grok `plan` mode. Prompts are delivered via Grok `--prompt-file` from a Delegate temp file.
|
|
263
|
+
- Devin safe mode uses Delegate isolated copy plus a Delegate-generated `--agent-config` deny-list for edit/write/exec and `mcp__*`, with Devin `--permission-mode auto`. Work mode uses Devin `--permission-mode dangerous` because Devin print mode rejects unapproved edit/exec tools.
|
|
223
264
|
- Claude safe mode invokes `claude -p` with prompt text on stdin, `--permission-mode plan`, `--strict-mcp-config`, Read/Grep/Glob plus selected read-only Bash tools, and `--no-session-persistence` by default. Delegate does not currently prove that Claude Code hooks, plugins, user settings, or other non-MCP customization surfaces are disabled.
|
|
224
265
|
- `work` mode can edit. By default it runs in the real workspace for backward compatibility.
|
|
225
266
|
|
|
@@ -246,7 +287,7 @@ To carry uncommitted local work into the worktree instead of stashing it, add
|
|
|
246
287
|
the worktree through the same snapshot primitives as safe mode, and tears the
|
|
247
288
|
worktree down before launching the child if that sync fails.
|
|
248
289
|
|
|
249
|
-
Safe isolation and `--include-dirty` recreate an untracked symlink only when it is relative, resolves inside the source workspace, and its target is not gitignored; any symlink that fails those checks — an absolute target, an escape out of the tree, or a target that is itself a gitignored secret — is replaced with an inert placeholder file, failing closed on any ambiguity. Delegate reports a warning listing the symlink paths it blocked. In Git repositories with no commits yet, Cursor/Codex/Claude/Droid/Kimi safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
|
|
290
|
+
Safe isolation and `--include-dirty` recreate an untracked symlink only when it is relative, resolves inside the source workspace, and its target is not gitignored; any symlink that fails those checks — an absolute target, an escape out of the tree, or a target that is itself a gitignored secret — is replaced with an inert placeholder file, failing closed on any ambiguity. Delegate reports a warning listing the symlink paths it blocked. In Git repositories with no commits yet, Cursor/Codex/Claude/Droid/Grok/Devin/Kimi safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
|
|
250
291
|
|
|
251
292
|
Snapshots and `run-output` redact common credential shapes by default, including authorization headers, bearer/basic tokens, JWT-like strings, and common `token=` / `api_key=` / `password=` values. Use `--no-redact` only when exact output is necessary and safe to display.
|
|
252
293
|
|
|
@@ -278,6 +319,7 @@ AI_PROFILE delegate ...` uses the base config, or set
|
|
|
278
319
|
- [Agent setup](docs/agent-setup.md): human and non-interactive setup flows.
|
|
279
320
|
- [CLI reference](docs/cli-reference.md): commands, exit codes, and JSON contracts.
|
|
280
321
|
- [Configuration](docs/configuration.md): config precedence, sections, and provider-neutral aliases.
|
|
322
|
+
- [Delegate Workflows](docs/delegate-workflows.md): workflow DSL, caps, config, and gate semantics.
|
|
281
323
|
- [Security model](docs/security-model.md): boundaries, limitations, and safe usage.
|
|
282
324
|
- [Worktrees](docs/worktrees.md): persistent-worktree lifecycle and cleanup.
|
|
283
325
|
- [Troubleshooting](docs/troubleshooting.md): common failures and checks.
|
|
@@ -20,29 +20,29 @@ 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 [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
24
|
-
delegate cursor work [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
25
|
-
delegate cursor call [--read-only] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
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...]
|
|
26
26
|
|
|
27
|
-
delegate droid MODEL_ALIAS safe [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
28
|
-
delegate droid MODEL_ALIAS work [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
29
|
-
delegate droid MODEL_ALIAS call [--read-only] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
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...]
|
|
30
30
|
|
|
31
|
-
delegate codex safe [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
32
|
-
delegate codex work [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
33
|
-
delegate codex call [--read-only] [--reasoning-effort LEVEL] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
31
|
+
delegate codex safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
32
|
+
delegate codex work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
33
|
+
delegate codex call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
34
34
|
|
|
35
|
-
delegate claude safe [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
36
|
-
delegate claude work [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
37
|
-
delegate claude call [--read-only] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
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...]
|
|
38
38
|
|
|
39
|
-
delegate grok safe [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
40
|
-
delegate grok work [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
41
|
-
delegate grok call [--read-only] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
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...]
|
|
42
42
|
|
|
43
|
-
delegate kimi safe [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
44
|
-
delegate kimi work [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
45
|
-
delegate kimi call [--read-only] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
43
|
+
delegate kimi safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
44
|
+
delegate kimi work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
45
|
+
delegate kimi call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
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
|
|
@@ -61,7 +61,17 @@ begins, a later `--json` or `--isolation` still fails with
|
|
|
61
61
|
`misplaced_global_option`; use `--prompt-file` or stdin for literal flag-like
|
|
62
62
|
prompt text.
|
|
63
63
|
|
|
64
|
-
`--
|
|
64
|
+
`--model <alias-or-model>` is optional on every engine and is parsed only before
|
|
65
|
+
prompt text begins. The value is resolved against `<engine>.models` when it
|
|
66
|
+
matches an alias key; otherwise it is passed through verbatim as a raw model ID
|
|
67
|
+
(the harness validates unknown IDs). Droid also accepts an optional positional
|
|
68
|
+
`MODEL_ALIAS` (alias-only/strict); give either the positional or `--model`, not
|
|
69
|
+
both. With neither, Droid uses `droid.defaultModel` when set. Discover aliases
|
|
70
|
+
and advisory catalogs with `delegate models`, `delegate models <engine>`, and
|
|
71
|
+
`delegate models <engine> --live` (live probes for cursor/droid/devin; other
|
|
72
|
+
engines report live unsupported).
|
|
73
|
+
|
|
74
|
+
`--reasoning-effort LEVEL` is optional and parsed only before prompt text begins. Unsupported model/effort pairs fail closed 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`). Kimi does not support reasoning effort in v1.
|
|
65
75
|
|
|
66
76
|
`--progress` enables parent progress heartbeats on stderr for tracked foreground
|
|
67
77
|
runs. `--no-progress` disables them even when `progress.enabled` is true in
|
|
@@ -123,11 +133,12 @@ auth/env selection happens.
|
|
|
123
133
|
Usage:
|
|
124
134
|
|
|
125
135
|
```bash
|
|
126
|
-
delegate [--json] [--isolation auto|none|worktree] codex {safe,work,call} [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
136
|
+
delegate [--json] [--isolation auto|none|worktree] codex {safe,work,call} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
127
137
|
```
|
|
128
138
|
|
|
129
139
|
- 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.
|
|
130
140
|
- Prompt text is delivered on stdin to `codex exec`; dry-run argv and tracked run manifests do not contain the prompt.
|
|
141
|
+
- Model selection uses `--model` (alias from `codex.models` or a raw model ID), the run-input JSON `model`, or `codex.defaultModel`.
|
|
131
142
|
- `--reasoning-effort` maps to a Codex `model_reasoning_effort` config override after the model is resolved.
|
|
132
143
|
- `--output-schema FILE` is **codex-only**. Cursor, Droid, Kimi, and Claude reject it. `FILE` is a path to a JSON Schema that OpenAI enforces on Codex's final message, for machine-parseable output in fan-outs and JSON run input. Relative paths resolve against the process launch cwd, the same rule as `--prompt-file`. When set, Delegate suppresses the completion-report prompt injection for that run so the schema owns the whole final message. Missing or unreadable files fail fast before launch.
|
|
133
144
|
|
|
@@ -135,6 +146,7 @@ Examples:
|
|
|
135
146
|
|
|
136
147
|
```bash
|
|
137
148
|
delegate codex safe "Review this repo for regressions; report file/line/severity."
|
|
149
|
+
delegate codex safe --model gpt-5.5 "Review this repo for regressions; report file/line/severity."
|
|
138
150
|
delegate codex work "Implement the scoped task; report changed files and tests."
|
|
139
151
|
delegate codex call "Summarize this context in three bullets."
|
|
140
152
|
delegate --json codex safe --output-schema findings.schema.json "Return one record per finding."
|
|
@@ -146,7 +158,7 @@ delegate --isolation worktree codex work "Implement the feature in a persistent
|
|
|
146
158
|
Usage:
|
|
147
159
|
|
|
148
160
|
```bash
|
|
149
|
-
delegate [--json] [--isolation auto|none|worktree] claude {safe,work,call} [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
161
|
+
delegate [--json] [--isolation auto|none|worktree] claude {safe,work,call} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
150
162
|
```
|
|
151
163
|
|
|
152
164
|
- 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`.
|
|
@@ -154,13 +166,14 @@ delegate [--json] [--isolation auto|none|worktree] claude {safe,work,call} [--re
|
|
|
154
166
|
- Prompt text is delivered on stdin to `claude -p`; dry-run argv and tracked run manifests do not contain the prompt.
|
|
155
167
|
- JSON-streaming runs use `--output-format stream-json --input-format text`; pass-through runs use `--output-format text`.
|
|
156
168
|
- Work mode uses `claude.workPermissionMode` from config, unless Delegate policy explicitly enables `policy.harness.claude.work.bypassApprovalsAndSandbox`, which maps to Claude `--permission-mode bypassPermissions`.
|
|
169
|
+
- Model selection uses `--model` (alias from `claude.models` or a raw model ID), the run-input JSON `model`, or `claude.defaultModel`.
|
|
157
170
|
- `--reasoning-effort` maps to Claude Code `--effort` and accepts `low`, `medium`, `high`, `xhigh`, or `max`.
|
|
158
171
|
|
|
159
172
|
Examples:
|
|
160
173
|
|
|
161
174
|
```bash
|
|
162
175
|
delegate claude safe "Review this repo for regressions; report file/line/severity."
|
|
163
|
-
delegate claude work "Implement the scoped task; report changed files and tests."
|
|
176
|
+
delegate claude work --model claude-opus-4-6 "Implement the scoped task; report changed files and tests."
|
|
164
177
|
delegate claude call "Summarize this context in three bullets."
|
|
165
178
|
delegate --isolation worktree claude work "Implement the feature in a persistent worktree."
|
|
166
179
|
```
|
|
@@ -170,12 +183,13 @@ delegate --isolation worktree claude work "Implement the feature in a persistent
|
|
|
170
183
|
Usage:
|
|
171
184
|
|
|
172
185
|
```bash
|
|
173
|
-
delegate [--json] [--isolation auto|none|worktree] grok {safe,work,call} [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
186
|
+
delegate [--json] [--isolation auto|none|worktree] grok {safe,work,call} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
174
187
|
```
|
|
175
188
|
|
|
176
189
|
- 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.
|
|
177
190
|
- Prompt text is delivered via Grok `--prompt-file` from a Delegate temp file; dry-run argv and tracked run manifests do not contain the prompt.
|
|
178
191
|
- Work mode uses `grok.workPermissionMode` and `grok.workSandbox` from config, unless Delegate policy explicitly enables `policy.harness.grok.work.bypassApprovalsAndSandbox`, which maps to Grok `--permission-mode bypassPermissions`.
|
|
192
|
+
- Model selection uses `--model` (alias from `grok.models` or a raw model ID), the run-input JSON `model`, or `grok.defaultModel`.
|
|
179
193
|
- `--reasoning-effort` maps to Grok `--effort` and accepts `low`, `medium`, `high`, `xhigh`, or `max`.
|
|
180
194
|
- `--output-schema` is unsupported for Grok in v1 because Grok `--json-schema` forces final JSON output and weakens live snapshot parity.
|
|
181
195
|
|
|
@@ -193,12 +207,12 @@ delegate --isolation worktree grok work "Implement the feature in a persistent w
|
|
|
193
207
|
Usage:
|
|
194
208
|
|
|
195
209
|
```bash
|
|
196
|
-
delegate [--json] [--isolation auto|none|worktree] kimi {safe,work,call} [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
210
|
+
delegate [--json] [--isolation auto|none|worktree] kimi {safe,work,call} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
197
211
|
```
|
|
198
212
|
|
|
199
213
|
- 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.
|
|
200
214
|
- 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`.
|
|
201
|
-
- Model selection
|
|
215
|
+
- Model selection uses `--model` (alias from `kimi.models` or a raw model ID), the run-input JSON `model`, or `kimi.defaultModel`.
|
|
202
216
|
- `--reasoning-effort` is unsupported for Kimi in v1.
|
|
203
217
|
- Kimi prompt text is passed via argv.
|
|
204
218
|
|
|
@@ -211,6 +225,67 @@ delegate kimi call "Summarize this context in three bullets."
|
|
|
211
225
|
delegate --isolation worktree kimi work "Implement the feature in a persistent worktree."
|
|
212
226
|
```
|
|
213
227
|
|
|
228
|
+
### `delegate workflow`
|
|
229
|
+
|
|
230
|
+
Workflows run a Python DSL supervisor that can fan out normal Delegate child
|
|
231
|
+
runs, journal progress, pause on approval gates, and resume from cached child
|
|
232
|
+
results. Workflow state lives under `.delegate/workflows/<wfId>/`; child runs
|
|
233
|
+
are tagged with `--group <wfId>`.
|
|
234
|
+
|
|
235
|
+
Usage:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
delegate [--json] workflow check <script.py>
|
|
239
|
+
delegate [--json] workflow run <script.py> [--args JSON] [--budget N] [--dry-run]
|
|
240
|
+
delegate [--json] workflow run --resume <wfId> [--budget N]
|
|
241
|
+
delegate [--json] workflow status <wfId>
|
|
242
|
+
delegate [--json] workflow events <wfId> [--since SEQ]
|
|
243
|
+
delegate [--json] workflow watch <wfId> [--since SEQ]
|
|
244
|
+
delegate [--json] workflow wait <wfId> [--timeout SEC]
|
|
245
|
+
delegate [--json] workflow result <wfId>
|
|
246
|
+
delegate [--json] workflow approve <wfId>
|
|
247
|
+
delegate [--json] workflow kill <wfId>
|
|
248
|
+
delegate [--json] workflow list
|
|
249
|
+
delegate [--json] workflow save <script.py> --name NAME
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
- `check` validates the workflow script, including literal preflight checks for
|
|
253
|
+
unsupported `agent()` combinations.
|
|
254
|
+
- `run` launches a detached supervisor; `--dry-run` renders planned stubs
|
|
255
|
+
without launching child agents or consuming real budget.
|
|
256
|
+
- `--resume` replays the journal, adopts matching child runs by workflow agent
|
|
257
|
+
key, and continues from missing work.
|
|
258
|
+
- `approve` releases a paused gate (and resumes). Do not also run
|
|
259
|
+
`run --resume` for the same gate — approve already is that resume. `kill`
|
|
260
|
+
validates the supervisor process group before signaling and always attempts
|
|
261
|
+
child fan-out cancellation.
|
|
262
|
+
- JSON-capable workflow commands return the normal `{ok: ...}` envelope. Invalid
|
|
263
|
+
scripts fail with `invalid_workflow_script`.
|
|
264
|
+
|
|
265
|
+
#### Workflow error codes
|
|
266
|
+
|
|
267
|
+
Codes raised as `DelegateError` from workflow commands (`workflows/commands.py`):
|
|
268
|
+
|
|
269
|
+
| Code | Meaning |
|
|
270
|
+
| --- | --- |
|
|
271
|
+
| `invalid_workflow_args` | `--args` is not valid JSON. |
|
|
272
|
+
| `invalid_workflow_id` | `wfId` is not `wf_` + 12 hex digits. |
|
|
273
|
+
| `invalid_workflow_name` | Saved-workflow `--name` is not a simple file stem. |
|
|
274
|
+
| `invalid_workflow_script` | Script failed `check` / load validation. |
|
|
275
|
+
| `missing_workflow` | A verb that needs `<wfId>` was invoked without one. |
|
|
276
|
+
| `missing_workflow_save_args` | `save` needs both `<script.py>` and `--name`. |
|
|
277
|
+
| `missing_workflow_script` | `run`/`check` need `<script.py>` or `--name`. |
|
|
278
|
+
| `unknown_workflow_action` | Unrecognized `workflow` subcommand. |
|
|
279
|
+
| `workflow_execution_failed` | Dry-run (or in-process) execution raised before detach. |
|
|
280
|
+
| `workflow_locked` | Another supervisor already holds the workflow flock. |
|
|
281
|
+
| `workflow_not_found` | No workflow directory / status for that `wfId`. |
|
|
282
|
+
| `workflow_not_gated` | `approve` on a workflow that is not paused on a gate. |
|
|
283
|
+
| `workflow_result_missing` | `result` before `result.json` exists. |
|
|
284
|
+
| `workflow_script_not_found` | Resolved script path is missing or not a file. |
|
|
285
|
+
|
|
286
|
+
See [Delegate Workflows](delegate-workflows.md) for the DSL, caps, config, and
|
|
287
|
+
gate semantics.
|
|
288
|
+
|
|
214
289
|
### Stateless `call` mode
|
|
215
290
|
|
|
216
291
|
`call` is the one-hop model-call form of Delegate: "work mode minus a repo." It
|
|
@@ -383,9 +458,9 @@ Supported input keys:
|
|
|
383
458
|
}
|
|
384
459
|
```
|
|
385
460
|
|
|
386
|
-
- `engine`: `cursor`, `droid`, `codex`, `claude`, `grok`, or `kimi`.
|
|
461
|
+
- `engine`: `cursor`, `droid`, `codex`, `claude`, `grok`, `devin`, or `kimi`.
|
|
387
462
|
- `mode`: `safe`, `work`, or `call`.
|
|
388
|
-
- `model`:
|
|
463
|
+
- `model`: optional alias-or-id for every engine. Resolved against `<engine>.models` when it matches an alias; otherwise passed through as a raw model ID. For Droid, a positional alias remains alias-only/strict; JSON/`--model` is alias-or-id. Cursor honors an explicit model even when it differs from `cursor.defaultModel`.
|
|
389
464
|
- `cwd`: optional workspace path. Git directories resolve to the repo root. Omit it for `mode: "call"`, which always uses an empty temporary cwd.
|
|
390
465
|
- `isolation`: optional `auto`, `none`, or `worktree`. `null` is invalid. `mode: "call"` rejects isolation. For Cursor, Claude, Grok, Droid, and Kimi safe mode, `none` is normalized to `auto` with a warning.
|
|
391
466
|
- `reasoningEffort`: optional non-empty effort string. It overrides provider `defaultReasoningEffort` for that JSON run.
|
|
@@ -408,12 +483,14 @@ delegate --json describe --summary
|
|
|
408
483
|
delegate --json models --summary
|
|
409
484
|
delegate --json describe
|
|
410
485
|
delegate --json models
|
|
486
|
+
delegate --json models <engine>
|
|
487
|
+
delegate --json models <engine> --live
|
|
411
488
|
delegate --json capabilities
|
|
412
489
|
delegate --json capabilities refresh
|
|
413
490
|
delegate agent-help
|
|
414
491
|
```
|
|
415
492
|
|
|
416
|
-
`describe` reports version, engines, modes, supported isolation values, prompt transforms, effective policy, top-level profile config metadata, and representative argv shapes. It also includes a `commands` catalog derived from the help registry; each full entry includes stable `name`/`command`, usage, arguments, options, and launchOptions fields. Full `describe` is a strict superset of `describe --summary`, so fields present in summary keep the same names in the full payload. `models` reports configured Cursor, Droid, Codex, Claude, Grok, and Kimi model settings. Discovery output applies best-effort credential scrubbing
|
|
493
|
+
`describe` reports version, engines, modes, supported isolation values, prompt transforms, effective policy, top-level profile config metadata, and representative argv shapes. It also includes a `commands` catalog derived from the help registry; each full entry includes stable `name`/`command`, usage, arguments, options, and launchOptions fields. Full `describe` is a strict superset of `describe --summary`, so fields present in summary keep the same names in the full payload. `models` reports configured Cursor, Droid, Codex, Claude, Grok, Devin, and Kimi model settings, including non-empty `<engine>.models` alias maps. `models <engine>` returns an advisory per-engine catalog (bundled + config); `--live` merges a harness probe for cursor, droid, and devin when available. Discovery output applies best-effort credential scrubbing, so secret-shaped values (including model IDs or paths that resemble credentials) are redacted — copy exact values from your config file rather than from scrubbed output. Agents should start with `--summary` for a compact inventory, then use raw output only when needed.
|
|
417
494
|
|
|
418
495
|
Both `describe` and `models` include provenance fields useful for detecting installed-runtime drift:
|
|
419
496
|
|