Hmbown/CodeWhale · error · anyhow::Error
Account settings import is not available yet; local config…
Error message
Account settings import is not available yet; local config was not changed. Run `codewhale account pull --dry-run` to inspect the signed-in account.
What it means
`codewhale account pull` only implements the `--dry-run` preview: /api/me exposes identity and key metadata but not a versioned settings document that could be applied locally. Without `--dry-run` the command refuses early, guaranteeing local config is untouched.
Solutions
- Re-run with `--dry-run`: `codewhale account pull --dry-run`.
- Wait for the settings-import feature; do not script around the guard, since local config must not change.
- Manage local config directly until import ships.
Example fix
// before codewhale account pull // after codewhale account pull --dry-run
Defensive patterns
Strategy: validation
Validate before calling
// Only invoke pull with --dry-run until import ships let args: Vec<String> = std::env::args().collect(); assert!(args.iter().any(|a| a == "--dry-run"), "pull is dry-run-only");
Prevention
- Always pass `--dry-run` to `codewhale account pull`.
- Treat pull as a read-only preview until the import feature ships.
- Never script non-interactive pull without the flag.
- Check `codewhale account pull --help` for the current capability set.
When it happens
Trigger: Running `codewhale account pull` without the `--dry-run` flag.
Common situations: Users expecting pull to actually import account settings today; habits from other tools where pull applies changes; attempting config sync between machines.
Related errors
- Push is never automatic; re-run with --dry-run to preview…
- A positive pull request number is required
- account_agent_model_unconfigured
- already exists; pass --force to overwrite it
- Antigravity is a retired, non-runnable legacy provider…
AI-assisted analysis of Hmbown/CodeWhale@73e0f67d83 (2026-09-22).
Data as JSON: /api/errors/5206a7d58edba2ee.
Report an issue: GitHub.
Appendix: source
Thrown at crates/cli/src/cloud.rs:912
let who = machine_client.whoami(sleeper)?;
machine::write_whoami(out, &who, api_base, machine_client.key_head())
}
None => {
let user = client.me()?;
write_account(out, "Signed in to Codewhale.", profile, api_base, &user)
}
},
CloudCommand::Agent => {
// The agent route is machine-key-only by design, so CI and humans
// never blur in an audit trail. There is no session fallback.
let key = machine.require()?;
let machine_client = machine::MachineClient::new(transport, key);
let agent = machine_client.agent(sleeper)?.agent;
machine::write_agent(out, &agent)
}
CloudCommand::Pull(args) => {
if !args.dry_run {
bail!(
"Account settings import is not available yet; local config was not changed. Run `codewhale account pull --dry-run` to inspect the signed-in account."
);
}
let user = client.me()?;
// `/api/me` currently exposes account identity and key metadata,
// not a versioned settings document that can be applied locally.
// Stay read-only and explicit until that import contract exists.
writeln!(out, "Account settings (pull --dry-run):")?;
writeln!(out, "Account ID: {}", printable(&user.id))?;
writeln!(out, "Profile: {}", printable(profile))?;
writeln!(out, "API: {api_base}")?;
writeln!(
out,
"dry-run: remote settings import is not available; local config unchanged"
)?;
// Show the invariant: Bearer custody stays in the OS keyring, never in config.toml.
writeln!(
out,View on GitHub (pinned to 73e0f67d83)