agnostic-ai v0.90.0: per-tool settings and safer sync 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. Upgrading from v0.89.0 Stop 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. - 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 . - 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/ . - 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/ . - 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. - 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. - 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. Web 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 . Install through your existing package manager. For a global npm installation: npm install -g agnostic-ai@0.90.0 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 . Run 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. What agnostic-ai changed Edit one tool's settings and find native-only servers Run 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 . The 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. Keep edited files and recover sync state Sync 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. An 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/ . Preserve more native settings - 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 . - 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. - Junie: portable effort reaches .junie/config.json and imports back. For example, a settings spec can give Junie its own value: name: defaults model: junie: sonnet effort: junie: high Junie 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. Attach a preview and target hook behavior Claude Code can attach a preview to a server you already run. In an environment spec selected for Claude Code: name: preview targets: claude dev-commands: - name: App url: http://localhost:3000 Sync writes .claude/launch.json without a start command. See environment fields https://agnostic-ai.org/docs/spec-format/environments/ fields . CodeBuddy 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 . Gemini 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. Get actionable checks before syncing Version 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. Claude 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. See the full release notes https://github.com/Chemaclass/agnostic-ai/releases/tag/v0.90.0 for the remaining fixes. What changed in the targets Repository defaults and model cache settings GitHub'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. 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.