Deprecations and removals
This page lists renamed or merged public names, which of them have been removed, and which are still on their way out.
Policy. A deprecated name survives two minor versions, then it is removed. The policy is unchanged. v1.69.0 removed everything that was deprecated in v1.66.0, with the exceptions listed under Still deprecated and Names withdrawn from the deprecation list.
How each surface signals a deprecation while the window is open:
| Surface | Signal | Still works? |
|---|---|---|
| MCP tool | description opens with [deprecated → <new tool> <param>]; tool_catalog marks it deprecated: true |
Yes. It stays in tools/list and stays callable, because hiding a tool makes it uncallable, which defeats the point of a window |
| CLI subcommand | clap hide = true: gone from --help, still parsed |
Yes |
config.toml value |
warn! once per process on read, plus an audit event when written |
Yes. The configured behaviour is never silently substituted |
| Dashboard | Only the new name is offered. A saved deprecated value stays visible, labelled 已棄用 | Yes |
| Agent runtime | warn! once per process on read; a runtime_provider_deprecated audit event when written through the dashboard. The dashboard stops offering it and labels a saved value 已棄用 |
Yes. Parsed and executed exactly as before |
Removed in v1.69.0
Section titled “Removed in v1.69.0”MCP tools
Section titled “MCP tools”Eight tool names are no longer declared. They do not appear in tools/list.
Calling one returns a tool error that names the replacement call. The tool
count went from 249 to 241.
| Removed | Use instead |
|---|---|
shared_wiki_ls |
wiki_ls with scope="shared" |
shared_wiki_read |
wiki_read with scope="shared" |
shared_wiki_write |
wiki_write with scope="shared" |
shared_wiki_search |
wiki_search with scope="shared" |
shared_wiki_stats |
wiki_stats with scope="shared" |
shared_wiki_lint |
wiki_lint with scope="shared" |
schedule_task |
tasks_create with schedule="<cron expression>" |
skill_bank_search |
skill_search with source="bank" |
shared_wiki_delete and wiki_share were never aliases. They keep their names
and are not affected.
Employees that still name a removed tool. An agent.toml [capabilities]
tool list, a prompt or a skill may still contain an old name. What an old name
does depends on the list:
| Where the old name is written | Effect after the upgrade |
|---|---|
allowed_tools |
The entry matches nothing. An employee whose allowlist names only the old tool loses the capability. Replace it with the new name |
denied_tools |
The MCP gate still refuses the equivalent call (for example wiki_write with scope="shared"). The Claude CLI flag no longer matches, so write the new name to deny it everywhere |
approval_required_tools, irreversible_tools, maybe_irreversible_tools |
The gate still applies to the equivalent call. A wiki_write without scope="shared" is not affected |
scoped_tools |
A task grant is still required for the equivalent call. The grant is requested and recorded under the name written in the list |
config.toml [provenance] sensitive_tools |
The gateway still gates the new name in its place |
Everywhere except allowed_tools the old name keeps working as a guard, but it
is stale, so replace it with the new name. duduclaw doctor has a check for
removed tool names. It reads each employee’s agent.toml [capabilities] lists,
the prompt files at the root of the employee directory (SOUL.md,
IDENTITY.md, CLAUDE.md, AGENTS.md, GEMINI.md, CONTRACT.toml), the
Markdown files under SKILLS/ and wiki/, and config.toml ([provenance]
and [[ccr.allowed_sources]]). It does not read prompt text inside scheduled
tasks and automation rules, tool assertions in evals/ and in playbooks,
.mcp.json, or the shared wiki.
Background on the three merged entry points, which behave as before:
- Wiki.
wiki_*takesscope: "agent" | "shared", defaultagent, so every existingwiki_*call is unchanged. The.scope.tomlnamespace policy,wiki_visible_tovisibility and the author-or-main-agent rule on delete did not change. - Creating work.
tasks_createtakeskind("task", the default, or"goal") andschedule(a cron expression with 5 or 6 fields for recurring work, or an RFC3339 instant such as2026-10-01T09:00:00+08:00for a one-shot wake-up). Both forms neednotify_channelandnotify_chat_idto deliver a result; a one-shot without them is refused.kind="goal"combined withscheduleis refused. The delegation policy check (department and hierarchy) runs once at this entry, before any branch.goals_create(a node in the Initiative, Project, Issue hierarchy) andcreate_task(an explicit multi-stepstepsplan for the TaskSpec dispatcher) are different tools and were never deprecated. - Skill search.
skill_searchtakessource:"all"(default, hubs and the learned skill bank, de-duplicated by skill name),"github","hub"or"bank". The learned skill bank is still an empty in-memory stub, sosource="bank"reports an empty store.
CLI spellings
Section titled “CLI spellings”Each of these spellings still parses, prints one line that names the new spelling, and exits with code 2. Nothing is executed.
| Removed | Use instead |
|---|---|
duduclaw migrate-from <platform> |
duduclaw migrate from <platform> |
duduclaw audit … |
duduclaw export audit … |
duduclaw gdpr export <contact> |
duduclaw export gdpr <contact> |
duduclaw playbook export --agent <agent> |
duduclaw export playbook --agent <agent> |
duduclaw acp-server |
duduclaw acp server |
duduclaw expert install <source> |
duduclaw pack install <source> |
duduclaw expert install and duduclaw pack install run the same install
pipeline, so what gets installed does not change. The dashboard’s one-click
install, upload install and AI-draft install now call pack install.
duduclaw gdpr erase and duduclaw playbook migrate-soul are unaffected.
config.toml [dispatch] judge
Section titled “config.toml [dispatch] judge”The values evaluator_only and human_only (and their aliases evaluator
and human) are removed. The valid values are mav (default) and external.
The dashboard and system.update_config refuse to write the removed values.
A config.toml that still contains one of them is handled like this:
| Old value | What the gateway does now | What to do |
|---|---|---|
evaluator_only |
Uses mav for acceptance. Review is stricter and judge cost goes up. [dispatch] two_stage_judge (on by default) still runs the cheap evaluator first and pays for the panel only for a completion candidate |
Set judge = "mav" |
human_only |
Does not fall back to machine acceptance. Every item sent for acceptance stops at needs_human, with the pause reason shown as a system problem and instructions for the fix |
Set judge = "mav", or external. For work that needs a person, use the per-agent [capabilities] autonomy_level and approval_required_tools. To release stuck work, press 標記完成 (mark done) on the task, or fix the setting and press 重試 (retry); a retry sends the task back to pending, clears its stored result summary and claim, and uses an optional note as the instruction for the next round. The round counter keeps counting, and files already written are not removed |
Both values log one warning per process. Once per gateway process and data
directory, when the first piece of work enters acceptance, the gateway writes
one judge_mode_removed audit event and one Activity Feed notice. After a
gateway restart it writes them again. The judge_mode_deprecated audit event
is no longer produced. duduclaw doctor lists the situation: human_only
shows as a failure because every item sent for acceptance stops, evaluator_only
shows as a warning, and a config.toml that cannot be read or parsed shows as a
warning that the check could not be made.
Before you upgrade
Section titled “Before you upgrade”- Grep your agent prompts, skills and automations for the eight removed MCP
tool names, and check each
agent.toml [capabilities]tool list. - Grep your scripts, cron entries and systemd units for the six removed CLI spellings. A removed spelling now exits with code 2 instead of running.
- Check
config.toml [dispatch] judgeforevaluator_onlyorhuman_only. - Run
duduclaw doctor. It lists leftover removed tool names and a removed judge value.
Still deprecated
Section titled “Still deprecated”Pack legacy formats
Section titled “Pack legacy formats”The legacy pack manifests expert.toml, team.toml and the industry pack
directory layout are deprecated. v1.69.0 still reads all of them, and none was
removed. They will be removed together with the rewritten premium templates in
a later version. No version number is set.
Why they stay. The newer pack.toml format can currently only be
installed as a job preset (kind = "preset"). duduclaw pack install
accepts a pack.toml team or industry pack when it reads the file, but then
hands the directory to the expert installer, which recognises a pack only by
its expert.toml (or a Claude Code plugin or a lone Agent Skill) and rejects
anything else. Until the installer can install a pack.toml team or industry
pack, the old formats cannot be taken away. See
Build your own pack for what to author today.
| Today | Status |
|---|---|
expert.toml (team and industry packs) |
Keep using it. Deprecated, still read |
team.toml, industry pack directories |
Deprecated, still read verbatim, no disk migration |
pack.toml with kind = "preset" |
Current format for job presets |
pack.toml with kind = "team" or "template" |
Can be read and inspected (pack inspect), cannot be installed yet |
Gemini CLI runtime
Section titled “Gemini CLI runtime”The Gemini CLI agent runtime (runtime id gemini, binary gemini, npm
package @google/gemini-cli) was deprecated in v1.67.0. Its removal moved
from v1.69.0 to v1.71.0, and on 2026-10-06 to v1.71.0 (the repeat verification of Antigravity with a real Gemini key after v1.69.1 has not been done yet; the removal waits for it). Its replacement is the Antigravity CLI runtime
(antigravity, binary agy).
| Old | New |
|---|---|
agent.toml [runtime] provider = "gemini" |
provider = "antigravity" |
agent.toml [runtime] fallback = "gemini" |
fallback = "antigravity" |
config.toml [runtime] utility_provider = "gemini" |
utility_provider = "antigravity" |
config.toml [dispatch] judge_provider = "gemini" |
judge_provider = "antigravity" |
[team.roles.*] runtime = "gemini" |
runtime = "antigravity" |
[discovery.attempt.runtimes.gemini] |
[discovery.attempt.runtimes.antigravity] |
Why the date moved. The announced precondition for removal was to verify
Antigravity’s API-key mode with a real Gemini API key. That verification found
that an Antigravity employee at the default permission level is refused by the
Antigravity CLI itself when it calls a platform tool. The fix ships in v1.69.1: the gateway adds two allow rules for the duduclaw
MCP server to the operator’s ~/.gemini/antigravity-cli/settings.json
(details: multi-runtime). The removal stays
scheduled for v1.70.0 (since 2026-10-06: v1.71.0), on the condition that Antigravity is verified again with
a real Gemini API key after that fix has shipped. That repeat verification has
not been done yet.
What still works. Every old value above keeps parsing and running exactly
as before. Reading one logs a warning once per process; setting it through the
dashboard (agents.create / agents.update) also records a
runtime_provider_deprecated audit event. The dashboard no longer offers
Gemini but shows a saved gemini value labelled 已棄用, and the agent edit
page’s runtime picker offers Antigravity. The “align the runtime with the
chosen model” step no longer writes a deprecated runtime. The setup wizard’s
default is Antigravity. The Docker image keeps shipping the Gemini CLI, and
duduclaw doctor lists agents whose provider or fallback is a deprecated
runtime.
Not deprecated. The Gemini API provider (provider id gemini,
GEMINI_API_KEY, the generateContent protocol in the LLM layer, a gemini
provider account) is unaffected. Antigravity’s API-key mode uses it too.
Why Gemini CLI is being retired. Google stopped serving free, Google AI Pro and Google AI Ultra individual accounts through Gemini CLI on 2026-06-18 and directs them to Antigravity CLI. API-key and enterprise (Gemini Code Assist) users are unaffected, and Gemini CLI is still maintained (source: the maintainers’ announcement; Google’s migration guide). Gemini CLI has not been shut down.
Migrating.
- In
agent.toml, change[runtime] provider = "gemini"(andfallback = "gemini") to"antigravity". - Authentication. For Google sign-in, run
agyin a terminal on the host and complete the login. If you authenticated Gemini CLI with an API key, setconfig.toml [antigravity] auth = "api_key"and keep using the same Gemini API key (ageminiprovider account, orGEMINI_API_KEY). - Model names. Use the names
agy modelslists; an id copied from a Gemini CLI setup may not select the same model. - Run
duduclaw doctor; it lists agents whoseproviderorfallbackis a deprecated runtime.
Before the removal in v1.71.0, check every agent.toml for
provider = "gemini" and fallback = "gemini", and check config.toml for
utility_provider, [dispatch] judge_provider, [team.roles.*] runtime and
[discovery.attempt.runtimes.gemini] set to gemini.
Names withdrawn from the deprecation list
Section titled “Names withdrawn from the deprecation list”These names were announced as deprecated and are now plain, supported behaviour.
| Name | Status | Reason |
|---|---|---|
duduclaw data-migrate |
Kept as a hidden alias of duduclaw migrate data |
Shipped DuDuClaw OS images run duduclaw data-migrate --run from a boot unit on a read-only root filesystem, so the spelling has to keep working. Use duduclaw migrate data in new scripts |
duduclaw migrate |
Supported, means duduclaw migrate schema |
The bare form is documented behaviour |
duduclaw export --out … |
Supported, means duduclaw export data --out … |
The bare form is documented behaviour |
duduclaw acp |
Supported, means duduclaw acp client |
The bare form is documented behaviour |
duduclaw expert list |
Kept | It lists the installed records, which is not what duduclaw pack list shows (installed packs and what is available to install) |
preset.toml |
Kept | It is the storage format of job presets. pack.toml with kind = "preset" is the other way to author one |
preset_bindings.toml (which employee has which preset applied) is state, not
a pack format, and was never deprecated. The authoring commands expert pack,
publish, export, convert-teams, hooks and remove stay under
duduclaw expert.