{"slug": "agnostic-ai-v0-90-0-per-tool-settings-and-safer-sync", "title": "agnostic-ai v0.90.0: per-tool settings and safer sync", "summary": "Agnostic-ai released v0.90.0, adding per-tool settings for model and effort through the Settings > What each tool gets interface and tightening sync safety around project paths, pack updates, and imported credentials. The release requires users to stop `agnostic-ai watch` processes before upgrading, since package install hooks can run sync, and it deprecates the Web API's `scope: \"team\"` or `\"local\"` form in favor of `audience: \"shared\"` or `\"personal\"`, with removal planned for the next minor release. Install scripts and the standalone `upgrade` command now verify download build provenance when `gh` is installed and logged in.", "body_md": "## Upgrading from v0.89.0\n\nStop running `agnostic-ai watch` processes before changing the installation or project configuration. Complete the applicable changes below before installing, since package install hooks can run sync.\n\n- **Keep project paths inside the project.** Move specs out of`.git` and change output paths that leave the project or enter`.git` . Replace links that lead to either location.`gitignore.path: .git/info/exclude` remains supported. See[project path boundaries](https://agnostic-ai.org/docs/configuration/#path-semantics) .\n- **Review pack names, sources, and update jobs.** Pack commands reject unsafe names and Git sources.`packs update` now restores the exact recorded commits; use`packs update --latest` when you intend to advance them. Local packs outside the project need the printed`packs add` command. See[updating packs](https://agnostic-ai.org/docs/packs/) .\n- **Move imported credentials into native user configuration or supported environment references.** Claude Code and Codex imports omit literal credentials and refuse older captured overlays containing them. After cleaning those files, use`import claude --overwrite` or`import codex --overwrite` to replace existing specs. Grok imports keep only the documented safe settings. See[credential handling](https://agnostic-ai.org/docs/spec-format/mcp-import/) .\n- **Move OpenHands global servers before global sync.** Add them in Agent Canvas under**Customize > MCP Servers** , then start a new conversation. The next global sync removes servers it previously managed in`~/.openhands/mcp.json` , including identical hand-written entries it adopted. OpenHands documents its current[settings store](https://docs.openhands.dev/openhands/usage/settings/mcp-settings) , checked October 29; see[legacy cleanup](https://agnostic-ai.org/docs/targets/openhands/#mcp) for what sync removes.\n- **Review affected native rules and names.** For previously imported Cursor rules that had no activation keys, set`alwaysApply: false` in their portable specs to keep them off. Rename Vibe agents named`main` , in any letter case. On Windows, rename imported spec filenames containing colons; Gemini commands such as`git:commit` now use nested output folders.\n- **Preserve a hand-written Junie effort before syncing.** Portable`effort` now writes`.junie/config.json` and replaces the native value. Import it first, or set`x-junie.effort` to retain a target-specific override.\n\nWeb API clients should switch edit and preview requests to `audience: \"shared\"` or `\"personal\"`. The older `scope: \"team\"` or `\"local\"` form remains accepted in v0.90.0 and is deprecated for removal in the next minor release. See the [API reference](https://agnostic-ai.org/docs/cli-reference/inspect/#api).\n\nInstall through your existing package manager. For a global npm installation:\n\n```\nnpm install -g agnostic-ai@0.90.0\n```\n\n`agnostic-ai upgrade --requires` updates the project's `requires` and editor schema URL, then syncs. It replaces existing minimum or range requirements and local overrides. To preserve a deliberate minimum or range, keep that requirement and update the schema URL to `v0.90.0` yourself. See [upgrade options](https://agnostic-ai.org/docs/cli-reference/upgrades/#upgrade).\n\nRun `agnostic-ai sync`, review the generated diff and any saved edited files, then run `agnostic-ai sync --check` before restarting watch. Install scripts and standalone `upgrade` now verify the download's build provenance when `gh` is installed and logged in; see [release verification](https://agnostic-ai.org/docs/verify-a-release/#build-provenance) for the checks and fallback rules.\n\n## What agnostic-ai changed\n\n### Edit one tool's settings and find native-only servers\n\nRun `agnostic-ai serve --open` and open **Settings > What each tool gets** to change `model` or `effort` for one configured tool. Choose **Shared** or **Personal**, preview sync, and save. A personal override for one tool leaves the shared defaults in place for the others. Global settings open in a separate tab with a link back to the project. See [settings edits](https://agnostic-ai.org/docs/spec-format/settings/#edit-scalar-settings-in-the-browser).\n\nThe **Tools** view lists MCP servers found only in a tool's own configuration, so you can choose which to import. Lifecycle stages start collapsed, show hook counts and commands, and support search. The sidebar scrolls with the page, and keyboard focus, mobile fields, and empty states are easier to use.\n\n### Keep edited files and recover sync state\n\nSync saves edited generated files before removing them and keeps its backup copies private and ignored by Git. Case-only output renames survive cleanup. Missing external adapters leave their files and shared skill links in place. Global sync preserves text outside its instructions block and comments around hooks in JSON settings.\n\nAn invalid sync state produces a warning and a fresh state file; unsafe recorded paths are skipped. On Windows, `sync --check --against` compares committed bytes without checkout line-ending changes. Plain checks explain line-ending drift and links checked out as ordinary files. Sync also does fewer repeated reads and renders, running about 25% faster in the project's 500-spec measurement. See [sync behavior](https://agnostic-ai.org/docs/cli-reference/sync/).\n\n### Preserve more native settings\n\n- **OpenCode:** import preserves provider configuration, including per-model prompt cache lifetime, while providers containing literal credentials are skipped with a warning. V2 agents keep their`temperature` under`request.body.temperature` .\n- **Copilot:** import and sync preserve repository`enabledPlugins` and`extraKnownMarketplaces` for CLI and cloud. Both Copilot and OpenCode projects are detected from their root settings files alone.\n- **Junie:** portable effort reaches`.junie/config.json` and imports back. For example, a settings spec can give Junie its own value:\n\n```\nname: defaults\nmodel:\n  junie: sonnet\neffort:\n  junie: high\n```\n\nJunie implicitly loads its default project file only in trusted projects. Effort needs a configured model, which can come from another config file; a saved effort for that model takes precedence. See the [Junie configuration reference](https://junie.jetbrains.com/docs/junie-cli-configuration.html), checked October 29, and [effort by target](https://agnostic-ai.org/docs/spec-format/settings/#effort-by-target), [OpenCode settings](https://agnostic-ai.org/docs/targets/opencode/), and [Copilot settings](https://agnostic-ai.org/docs/targets/copilot/) for supported fields.\n\n### Attach a preview and target hook behavior\n\nClaude Code can attach a preview to a server you already run. In an environment spec selected for Claude Code:\n\n```\nname: preview\ntargets: [claude]\ndev-commands:\n  - name: App\n    url: http://localhost:3000\n```\n\nSync writes `.claude/launch.json` without a start command. See [environment fields](https://agnostic-ai.org/docs/spec-format/environments/#fields).\n\nCodeBuddy prompt hooks now work on `Stop`, `UserPromptSubmit`, and `PreToolUse` at project scope. Mistral Vibe `post_agent` hooks can match a specific agent; subagent `active_model` needs Vibe 3.0.3 or later. See [CodeBuddy hooks](https://agnostic-ai.org/docs/targets/codebuddy/#fields-and-limits) and [Vibe mappings](https://agnostic-ai.org/docs/targets/vibe/#connections-settings-and-hooks).\n\nGemini commands with names such as `git:commit` write nested TOML files and import with their original names. Qwen accepts the same command names on Windows while refusing output filenames that Windows cannot create. Grok checks Git visibility once per sync check as rule counts grow, and `init` records the required instruction-visibility policy.\n\n### Get actionable checks before syncing\n\nVersion mismatches offer next steps and `upgrade` points out a remaining project pin. Configuration errors name the source file, line, key, and expected shape. `doctor` fails on unknown targets and reports JSON findings; `lint` and editors catch specs a selected tool cannot write and hooks with nothing to run.\n\nClaude Code sync also warns about settings that project scope ignores, hook events that cannot run their handlers, and models unaffected by global effort. Repository auto memory cannot be enabled through tracked case or look-alike local settings when `blockReadsOutsideWorkingDirectories` is on; personal memory keeps working through linked or short project paths.\n\nSee the [full release notes](https://github.com/Chemaclass/agnostic-ai/releases/tag/v0.90.0) for the remaining fixes.\n\n## What changed in the targets\n\n### Repository defaults and model cache settings\n\nGitHub's [October 28 announcement](https://github.blog/changelog/2026-10-28-github-copilot-in-vs-code-universe-releases/) makes repository plugin defaults in `.github/copilot/settings.json` available to Copilot CLI and Copilot in the cloud. These are defaults, not an enforcement policy. This release imports and preserves them; the [native configuration reference](https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-config-dir-reference#repository-settings-githubcopilotsettingsjson) explains marketplace sources and overrides.\n\n[OpenCode 2.2.0, released October 27](https://github.com/anomalyco/opencode/releases/tag/v2.2.0), adds per-model prompt cache lifetime. This release preserves the provider block through import under `x-opencode.provider`. Configure `provider.<provider>.models.<model>.settings.cache.ttl`, such as `1h`; this remains an OpenCode setting rather than a portable cache field.\n\n### Opt-in scheduled prompts in OpenCode\n\n[OpenCode 2.2.1, released October 29](https://github.com/anomalyco/opencode/releases/tag/v2.2.1), adds scheduled prompts and an optional image-generation tool. The existing `x-opencode` extension can enable the native settings:\n\n```\nname: opencode-schedules\ntargets: [opencode]\nx-opencode:\n  timezone: Europe/Berlin\n  experimental:\n    schedules: true\n```\n\nUse OpenCode's `/schedule` command to create schedules. Schedule definitions remain runtime state. Image generation has its own `experimental.image_generate` switch. agnostic-ai writes these settings but does not import the experimental fields in v0.90.0; see the [native schema](https://opencode.ai/config.json).\n\n### Vibe settings for outside-folder access and invalid keys\n\n[Vibe 3.0.3](https://github.com/mistralai/mistral-vibe/releases/tag/v3.0.3), released October 26 and checked October 29, provides `outside_workdir: deny` and `strict_config: true`. The existing `x-vibe` settings extension can write them. The first denies outside-folder access except for added directories and allowlisted paths; the second rejects unused configuration keys. These are existing upstream settings discovered during this release's audit. See the [released configuration source](https://raw.githubusercontent.com/mistralai/mistral-vibe/v3.0.3/vibe/core/config/vibe_schema.py) for their limits.", "url": "https://wpnews.pro/news/agnostic-ai-v0-90-0-per-tool-settings-and-safer-sync", "canonical_source": "https://agnostic-ai.org/updates/2026-10-29-v0.90.0/", "published_at": "2026-10-28 23:00:00+00:00", "updated_at": "2026-10-29 16:20:42.430303+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents", "agent-protocols"], "entities": ["agnostic-ai", "Claude Code", "Codex", "Grok", "OpenHands", "Cursor", "Vibe", "Junie"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/agnostic-ai-v0-90-0-per-tool-settings-and-safer-sync", "markdown": "https://wpnews.pro/news/agnostic-ai-v0-90-0-per-tool-settings-and-safer-sync.md", "text": "https://wpnews.pro/news/agnostic-ai-v0-90-0-per-tool-settings-and-safer-sync.txt", "jsonld": "https://wpnews.pro/news/agnostic-ai-v0-90-0-per-tool-settings-and-safer-sync.jsonld"}}