Skip to main content
Machine settings live in settings.json in agentx home. They never leave the machine.

List every setting

An empty setting shows as (none). In a terminal the keys are cyan and true is green.

Get one setting

The command prints the bare value, so a script can use it directly. An unknown key exits with code 1 and lists the keys.

Set a setting

Set label, auto_push, accept_operations or ignore_system_files. The booleans take true or false. A label is one non-empty line of at most 256 bytes with no control character in it. Any other value, an unknown key, or a key this command cannot change exits with code 1. The write is atomic: the file is replaced whole, or not at all. If another agentx command is running, the command exits with code 7 at once; retry when it finishes.

Enable or disable a configuration

Every agent configuration agentx scan detects is enabled from the start. Disable one to leave it out of placements by default; enable it to put it back. Use the id shown in parentheses by agentx scan. An id that is not detected exits with code 5 and lists the detected ids. Disabling a configuration does not stop its client from reading the library. Enabling only decides where later installs go. To fill a newly enabled client with what you already have, add --place-all:
Each skill placed gets one row: its placement in Cursor’s own skills directory. A skill Claude Code also holds is one row too, although Cursor reads Claude Code’s skills directory as well; --json lists both paths. Each skill is placed as a symlink, except in a configuration where agentx already keeps a copy of it: that one gets a copy again, as with agentx skill place. The setting and every placement it implies are one change, written down before anything on disk moves. A run interrupted part way is finished by the next agentx command rather than undone. A placement agentx cannot make does not fail the run. If something you put there yourself is already at one of the paths, or agentx cannot write the client’s skills directory, it leaves that path alone and names it, places the rest, and still succeeds, so the client can end up enabled with part of the library in it:
Here Cursor does not see pdf at all, so pdf has no row. If agentx left Cursor’s path alone and Cursor still sees the skill through another client’s skills directory, as it sees a skill Claude Code holds, the skill’s row shows that path instead, so the output still tells you Cursor has the skill. A copy agentx keeps for the client is skipped the same way when it is different from the library, for instance because you edited it. It stays exactly as it is, and the line under the warning names the commands that replace it with the library version:
The kept copy is not the library’s pdf, so pdf has no row here either. If Cursor also sees pdf through another client’s skills directory, pdf’s row shows that path, as above. See A copy that differs from the library. --place-all belongs to enable; agentx config disable --place-all exits with code 1. Place skills one at a time with agentx skill place. A client that reads the library directly, such as Codex, already sees every library skill, so --place-all makes no entry of its own for it and says so:

Script it

Add --json to any config command to get a settings event with every setting as an object:

Fix a broken file

If settings.json cannot be parsed, every config command exits with code 10 and names the file. Fix the JSON, or delete the file to start again from defaults.