Skip to content

Releases: yelmuratoff/exuno

0.47.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 04:02
7e24000

Release Notes

Added

  • One run at a time: sync, rollback, import, init, and mcp use take a lock on .ai/backups/.lock, so a second run started meanwhile stops before touching anything and names the run in its way. import takes it before it plans and holds it through the confirmation, so the changes you approve are the ones it applies.
  • Crash recovery: a run killed partway through (kill -9, a crash, power loss) is restored by the next command that changes the project, which keeps the half-written state as a backup exuno rollback can bring back.
  • Hidden personal skills: names listed under skills.hide in exuno.yaml turn off the personal skill a project skill replaces, through skillOverrides in .claude/settings.json and permission.skill in opencode.json; doctor points out a project skill that shares its name with a personal one.

Changed

  • Claude settings: the base settings let agents read .env files and deny editing the secret variants; .env.example stays editable.
  • Building from source: needs Rust 1.89.

Fixed

  • Rollback: restores folders as well as files, so rolling back a first sync no longer leaves an empty .claude/ behind.
  • Check: fails on an output edited since the last sync even when it already matches the source, as a script that edits the source and its outputs together leaves it, so check now fails wherever exuno sync would refuse an edited output.

Install exuno 0.47.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/exuno/releases/download/0.47.0/exuno-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/exuno/releases/download/0.47.0/exuno-installer.ps1 | iex"

Download exuno 0.47.0

File Platform Checksum
exuno-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
exuno-x86_64-apple-darwin.tar.xz Intel macOS checksum
exuno-x86_64-pc-windows-msvc.zip x64 Windows checksum
exuno-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
exuno-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/exuno

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.46.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 06:12
5089c50

Release Notes

Breaking

  • Import: a source that brings MCP servers, tool config, or skill scripts lists them under Runs commands: and asks before writing them; without a terminal, pass --force.
  • Import: keeps the project's own exuno.yaml; pass --config to take the source's.

Added

  • Import from git: any git URL, a GitHub or GitLab link to a ref and folder, or owner/repo; --ref and --path pick them, and private repositories use your git credentials.
  • Skill packages: import reads .skill and .zip archives and folders of skills, and export --skill <name> writes a .skill for Claude's skill upload.
  • Export: -o bundle.zip writes a ZIP.
  • Import: an import that changes files is backed up first, so exuno rollback undoes it.

Changed

  • Import: an imported skill replaces the project's copy whole, so files its new version dropped are removed.
  • Import: also reads .tar, .tar.xz, and .tar.bz2, and no longer needs curl.

Fixed

  • Export: the bundle now carries all of .ai/src, mcp.json included, and leaves hidden files and symbolic links out.
  • Import: a symbolic link in an archive or a remote no longer brings in files from outside it.
  • Update and import: their temporary folder is created private, so another user on a shared /tmp cannot tamper with it.

Install exuno 0.46.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/exuno/releases/download/0.46.0/exuno-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/exuno/releases/download/0.46.0/exuno-installer.ps1 | iex"

Download exuno 0.46.0

File Platform Checksum
exuno-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
exuno-x86_64-apple-darwin.tar.xz Intel macOS checksum
exuno-x86_64-pc-windows-msvc.zip x64 Windows checksum
exuno-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
exuno-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/exuno

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.45.2

Choose a tag to compare

@github-actions github-actions released this 07 Oct 19:32
2131541

Release Notes

Fixed

  • Migrate: run as agentsync, suggests agentsync migrate --apply and agentsync sync rather than an exuno command that is not installed yet.
  • Setup-hooks: with core.hooksPath set elsewhere, still rewrites an agentsync block in the repository's own hooks, so the exuno setup-hooks that doctor suggests for it works.

Install exuno 0.45.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/exuno/releases/download/0.45.2/exuno-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/exuno/releases/download/0.45.2/exuno-installer.ps1 | iex"

Download exuno 0.45.2

File Platform Checksum
exuno-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
exuno-x86_64-apple-darwin.tar.xz Intel macOS checksum
exuno-x86_64-pc-windows-msvc.zip x64 Windows checksum
exuno-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
exuno-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/exuno

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.45.1

Choose a tag to compare

@github-actions github-actions released this 07 Oct 13:29
a4851c4

Release Notes

Changed

  • Migrate: moving the config to .ai/exuno.yaml now warns that releases before 0.45.0 cannot read it, so the team updates before the move is committed.

Install exuno 0.45.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/exuno/releases/download/0.45.1/exuno-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/exuno/releases/download/0.45.1/exuno-installer.ps1 | iex"

Download exuno 0.45.1

File Platform Checksum
exuno-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
exuno-x86_64-apple-darwin.tar.xz Intel macOS checksum
exuno-x86_64-pc-windows-msvc.zip x64 Windows checksum
exuno-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
exuno-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/exuno

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.45.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 12:16
95b1395

Release Notes

Breaking

  • Rename: AgentSync is now Exuno — the exuno command, the yelmuratoff/exuno repository, and installs in ~/.exuno; the agentsync command, AGENTSYNC_* variables, .ai/agent_sync.yaml, agentsync_version, and metadata.agentsync-* keys keep working until 1.0.
  • New projects: init and enable write .ai/exuno.yaml with exuno_version, which AgentSync 0.44 and earlier cannot read.
  • Project format r3: every command reminds a project below r3, and exuno migrate --apply renames what still carries the old name and re-pins a project, and its CI gate, pinned before 0.45.0.
  • Bundled skill: ships as exuno; a project copy under skills/agentsync/ stops replacing it until exuno migrate moves it.

Added

  • Doctor: names every file, key, skill, and git hook that still carries the agentsync name.
  • Install: links both exuno and agentsync, and EXUNO_VERSION pins a release from before the rename too.
  • Update: installs a release from before the rename when a project pins one.

Changed

  • Git hooks and shell-init: call exuno, or agentsync when only that is installed, and setup-hooks replaces an older agentsync block instead of adding a second.
  • CI gate: init --ci github writes exuno-check.yml and keeps an existing agentsync-check.yml.
  • Export: writes exuno-bundle.tar.gz by default.
  • Releases: keep publishing agentsync-<target> archives until 1.0, so agentsync update on an older install reaches them.

Fixed

  • Codex: a rule index synced from the home directory points at ~/.ai/src/rules.
  • Bundled skill and command template: no longer run a documented shell example or blank $ARGUMENTS when Claude Code loads them.

Install exuno 0.45.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/exuno/releases/download/0.45.0/exuno-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/exuno/releases/download/0.45.0/exuno-installer.ps1 | iex"

Download exuno 0.45.0

File Platform Checksum
exuno-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
exuno-x86_64-apple-darwin.tar.xz Intel macOS checksum
exuno-x86_64-pc-windows-msvc.zip x64 Windows checksum
exuno-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
exuno-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/exuno

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.44.2

Choose a tag to compare

@github-actions github-actions released this 29 Sep 12:31

Release Notes

Added

  • Update: after a successful update, points to agentsync refresh for the project's rule, skill, and command templates.
  • Doctor: advises when a project copy replaces the bundled agentsync skill and so stops receiving its updates.

Install agentsync 0.44.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/agent_sync/releases/download/0.44.2/agentsync-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/agent_sync/releases/download/0.44.2/agentsync-installer.ps1 | iex"

Download agentsync 0.44.2

File Platform Checksum
agentsync-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
agentsync-x86_64-apple-darwin.tar.xz Intel macOS checksum
agentsync-x86_64-pc-windows-msvc.zip x64 Windows checksum
agentsync-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
agentsync-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/agent_sync

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.44.1

Choose a tag to compare

@github-actions github-actions released this 29 Sep 10:42

Release Notes

Fixed

  • Profiles: a profile with its own src/ now gets the bundled agentsync skill and its extensions, like the personal tools.

Install agentsync 0.44.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/agent_sync/releases/download/0.44.1/agentsync-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/agent_sync/releases/download/0.44.1/agentsync-installer.ps1 | iex"

Download agentsync 0.44.1

File Platform Checksum
agentsync-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
agentsync-x86_64-apple-darwin.tar.xz Intel macOS checksum
agentsync-x86_64-pc-windows-msvc.zip x64 Windows checksum
agentsync-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
agentsync-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/agent_sync

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.44.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 09:41

Release Notes

Added

  • Extend an inherited skill instead of replacing it. A directory named after the bundled agentsync skill, or after a skill a shared: parent provides, that has no SKILL.md of its own now adds to that skill: its files join the inherited ones, a file at the same path replaces the inherited one, and a SKILL.append.md is appended to the inherited SKILL.md at sync. The directory can sit at the skills root or inside any category. The inherited text keeps updating with the engine or the parent; a directory with its own SKILL.md still replaces the skill outright. doctor no longer reports such a directory as an empty skill.

Changed

  • The bundled agentsync skill loads less up front. Its SKILL.md is about half as long and points to topic references the agent reads when the task needs them: maintenance.md (now also backups, rollback, version pins, and the other commands), workspaces-and-profiles.md, mcp-and-tool-targets.md (with per-host notes on where an MCP server is actually live), settings-hooks-and-harness.md, writing-skills.md, and evaluating-skills.md, which is new. The writing guidance adds the removal and addition tests for rule lines, failure-mode vocabulary for skills, and a loop for turning an agent mistake into a harness change.

Fixed

  • update prints code in the changelog as written. The release notes it shows dropped every ** along with the bold markers, so a glob such as src/** read as src/; text inside backticks now keeps every character. A nested bullet also wraps under its own text instead of starting its continuation lines to the left of it.
  • migrate finds an engine-owned skill copy inside a category. A copy of the bundled agentsync skill moved to .ai/src/skills/<category>/agentsync/ still overrides the one the engine ships, but migrate looked only at .ai/src/skills/agentsync/ and reported no copy. It now finds the copy by name, removes it when unedited along with any category it leaves empty, and keeps it when edited.
  • A command's folded description reaches Codex, Kimi Code, Kiro, Amazon Q, and Zed whole. A command whose description: is a > or | block became a command-* skill described only as >, and an entry in the inlined ## Commands index reading — >; both now carry the folded text.

Install agentsync 0.44.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/agent_sync/releases/download/0.44.0/agentsync-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/agent_sync/releases/download/0.44.0/agentsync-installer.ps1 | iex"

Download agentsync 0.44.0

File Platform Checksum
agentsync-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
agentsync-x86_64-apple-darwin.tar.xz Intel macOS checksum
agentsync-x86_64-pc-windows-msvc.zip x64 Windows checksum
agentsync-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
agentsync-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/agent_sync

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.43.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 04:02

Release Notes

Breaking

  • Windsurf output moves to .devin/. Windsurf is now Devin Desktop and reads its project rules, skills, workflows, MCP config, and hooks from .devin/. The first sync after the upgrade writes there and removes the files it had recorded under .windsurf/; files you wrote there yourself stay. list shows the tool as Devin Desktop; its slug is still windsurf.
  • Cline gets native skills and its current layout. Cline reads AGENTS.md, .cline/rules/, .cline/skills/, and .cline/workflows/, so skills are copied as skills instead of inlined as an index in .clinerules/00-context.md. The first sync removes the files it had recorded under .clinerules/.
  • The config reader no longer borrows a list or a section from elsewhere in the file. An empty key such as enabled: followed by another key read the next - item list anywhere below it, so tools.enabled could pick up an unrelated list; it now reads as empty. A key holding a value, such as version_pin: warn, no longer hides a later mapping with the same name, so version_pin: with mode: strict further down now applies. A config written either way reads differently after the upgrade.
  • A tool override can set a field to empty. header: "" or exclude: [] in .ai/src/tools/<tool>.yaml used to fall back to the shipped value; a key you write now wins even when empty. A base: in an override of a shipped tool now fills the fields the shipped file leaves empty, where it used to be ignored.
  • Frontmatter fields read the first occurrence and whole quoted values. A field written twice in a command took its last value, and description: "use # with care" was cut at the #; the generated command-* skills and the inlined command index now carry the first value, quoted text intact.
  • A rule's globs come only from paths:. A rule with paths: also took every other list in its frontmatter, such as tags:, into the globs of Cursor's .mdc, Copilot's applyTo, and the other scoped headers. paths: ["src/**"] and paths: src/** now scope a rule too, where they used to leave it always on.
  • The inlined skill index shows a folded description whole. A skill whose description: is a >- block was indexed as -, and a > block showed only its first line; the index now carries the description skills show prints.
  • enable adds enabled: inside an existing tools: block. A config whose tools: had other keys but no enabled: got a second tools: block at the end of the file, which the reader then ignored.
  • A nested config key matches only at its own level. tools.enabled also matched an enabled: nested deeper, such as tools.foo.enabled, when reading or editing a config; a key one level further in no longer answers for it.
  • simplify --apply deletes nothing off a terminal without -y. A script running it removed byte-identical payload copies while keeping the override file it had emptied; both now wait for -y, and each kept file says so. Scripts that relied on the deletion add -y.
  • migrate leaves a file without an extension where it is. A README under .ai/src/settings/ moved to .ai/src/tools/README/settings.README, as if it were a tool's payload; it now stays, and update no longer counts it as a legacy override.
  • refresh off a terminal changes nothing without --yes. When only auto-updates were pending it applied them silently, and with --include-deleted it printed restore prompts it then declined; any pending change now stops with the same Use --yes error new files and conflicts gave. CI jobs that ran refresh to take auto-updates add --yes.
  • init records no template hash for the files it adopts. The template manifest was written before adoption, so an adopted AGENTS.md or rule carried the shipped template's hash and refresh treated the project's own text as an edit of the template. A project initialised earlier keeps the manifest it has.
  • add mcp keeps the rest of .ai/src/mcp.json. Adding a server dropped every top-level key other than mcpServers, replaced a file without mcpServers wholesale, took an mcpServers nested inside another key for the real one, and silently lost servers after an invalid key. Other keys now stay in order, mcpServers is added beside them, and a file that is not valid JSON is refused and left as it is.
  • import follows the source project's source.* paths. A project keeping, say, its commands in custom/cmds exported them, but no import read them back, and the imported agent_sync.yaml then pointed at a custom/cmds the new project did not have. Import now reads each section from its declared path, writes it into the project's own .ai/src/, and drops the source.* entries that would point elsewhere.

Added

  • Skills can be grouped into category directories. A directory under .ai/src/skills/ without its own SKILL.md is a category, so skills/flutter/bloc/SKILL.md and skills/backend/auth/SKILL.md can sit side by side, up to four category levels deep. Claude Code, VS Code Copilot, and Gemini CLI skip nested skills, so sync lands every skill flat at <dest>/<name>/ for every tool; the category exists only in the source. Skill names stay unique across categories: two skills with the same name stop the sync before anything is written, and the error names both.
    • targets.skills.include and .exclude take a category path as well as a name: exclude: cloudflare/*.
    • agentsync add skill <name> --category flutter/ui scaffolds into a category. skills list gains a category column, skills show a Category: line, and an inlined skill index groups its entries under ### <category> headings.
    • adopt returns an edited skill to its category, and doctor reports a name collision, a skill nested deeper than four categories, an empty category, and a category name that is not lowercase-kebab.
  • Kiro. kiro.yaml writes AGENTS.md, rules to .kiro/steering/ with inclusion: always (or inclusion: fileMatch for a rule with paths:), skills to .kiro/skills/, commands as command-* skills, subagents to .kiro/agents/ as Kiro Markdown agents, and MCP servers to .kiro/settings/mcp.json. Kiro's IDE and CLI succeed the Amazon Q Developer CLI; amazonq.yaml stays for projects still on Amazon Q Developer.
  • Three tool YAML options for tool authors: {globs_list} in scoped_header becomes a quoted YAML list of a rule's globs, format: kiro_md converts a subagent to a Kiro agent, and legacy_dest names where an earlier version wrote a target so the move cleans up after itself.

Fixed

  • doctor reports a secret beside an angle-bracket placeholder. A line such as host: <your-host> token: ghp_… was skipped whole, so the token went unreported. Only the <…> span is skipped now, as ${…} already was.
  • simplify finds payload overrides under source.tools. With the tool override directory moved, it looked in .ai/src/tools and reported no payloads to remove.
  • import https://github.com/user/repo.git/ downloads repo. The trailing / hid the .git suffix, so the download asked for a repository named repo.git.
  • profile add --tools trims names and refuses an unknown tool. --tools 'claude, nope' wrote a variant named nope-hub, space included, for a tool that does not exist; it now stops with unknown tool: nope. and exit status 2. A --tools with no value says so instead of exiting 1 in silence.
  • diff <slug> no longer answers "No user overrides" for any slug. In a project without overrides, a mistyped slug read as nothing to diff; it now fails with No override found for '<slug>', as it already did when other tools had overrides.
  • show <slug> <resource> labels an override by the file sync reads. An override such as .ai/src/tools/cursor/hooks.jsonc was shown as [base] because its extension differed from the shipped template's.
  • disable lists only the tools it disabled. An unknown slug, and a slug named twice, appeared under Disabled N tool(s) beside the tools that were really switched off.
  • sync --workspace exits with the highest status of its projects, as its max exit code line says. It exited with the last failure's status, so an OpenCode composition error (26) followed by an ordinary failure (1) ended as 1.
  • adopt .rules explains that Zed's rules file is merged. It answered that .rules was not a recognised AgentSync output; it now says the tool merges rules into one file and names the source rules directory to edit.
  • A file in the way of an output directory is named. init or sync with, say, a file where a tool writes a directory stopped with Backup target parent is not a directory: <target>; the message now names the file and says to move or rename it. A single-file .clinerules no longer triggers it, since Cline writes to .cline/.
  • dedupe keeps .ai/src/rules/ and the other top-level source directories. Deleting the last duplicate in one removed the directory itself; now only the empty folders below it go, such as a skill folder or a skill category left empty.
  • init --tools and --content read what was typed. A space inside a name was dropped, so cla ude enabled claude; it is now refused. An empty value such as --tools= or --content , skipped the wizard and contributed nothing, and --content , scaffolded a project without AGENTS.md; both now stop with requires a value.
  • add mcp checks --env before creating .ai/src/mcp.json, so a malformed pair no longer leaves an empty server map behind. --args and --env values that span lines are read whole: a newline separates arguments, and env pairs, like a space or a comma does.
  • profile remove deletes only what AgentSync generated in the config home. It removed the whole directory, such as .claude-hub/, with the credentials, history, and settings ...
Read more

0.42.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 12:32

Release Notes

Added

  • Key ownership covers every settings and MCP file in a config home, not only Codex. Claude Code writes the model, theme, effort level, and plugin choices into ~/.claude/settings.json, and an editor such as Cursor adds servers to its global mcp.json, so a global sync stopped on those edits the same way it did on Codex's. Synced from $HOME or into a profile, AgentSync now owns only the declared keys of each TOML or JSON settings and mcp file: Claude Code's settings.json and .mcp.json, Gemini CLI's settings.json, the MCP files of Cursor, Windsurf, Junie, Amazon Q, Kimi Code, and MiniMax Code, and OpenCode's composed opencode.json. A plugin Claude Code enabled or a server Cursor added stays where the tool put it; a declared key the tool changed stops the sync by name, and agentsync adopt <file> moves it into the source. Every server in mcpServers, mcp, mcp_servers, or context_servers is owned as one entry; a changed one is named by the sync, and for a server that came from an MCP source adopt sends you to that source rather than splitting a shared mcp.json between tools.
    • targets.mcp.ownership joins targets.settings.ownership; both default to auto for every tool, which in a repository keeps owning files whole, so project output does not change. Codex and OpenCode compose one file from both, so targets.settings.ownership decides for it. Tools that write the same MCP file, such as Claude Code and MiniMax Code with .mcp.json, must use the same mode, or the sync stops before writing.
    • A JSON file is left byte for byte while its declared values match, and 60 matches 60.0. When a declared value changes, the file is rewritten pretty-printed with its keys sorted, and adopt writes a JSON source the same way. JSON with comments stops the merge with a hint to use ownership: file; Zed's settings allow comments, so Zed's shipped tool owns its settings whole. A parse error says whether the source or the live file is at fault.
    • A tool you disable keeps its key-owned files, and they no longer hold up later syncs.
    • If you adopted a whole settings file before, it may carry state the tool wrote, such as Claude Code's feedbackSurveyState. Now that sync owns every declared key, remove such keys from .ai/src, or each change the tool makes to them stops the sync.

Changed

  • New lines in the sync log. A key-owned file is written as <source> → <dest> (owned keys only), a disabled tool's key-owned file as Kept <dest> (the app writes to it too), and a dry run warns A real sync would stop: … where the real run would stop on a whole-file switch or a first-run difference. The --json summary is unchanged.

Install agentsync 0.42.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yelmuratoff/agent_sync/releases/download/0.42.0/agentsync-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/yelmuratoff/agent_sync/releases/download/0.42.0/agentsync-installer.ps1 | iex"

Download agentsync 0.42.0

File Platform Checksum
agentsync-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
agentsync-x86_64-apple-darwin.tar.xz Intel macOS checksum
agentsync-x86_64-pc-windows-msvc.zip x64 Windows checksum
agentsync-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
agentsync-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo yelmuratoff/agent_sync

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>