Configuration and permissions
You can run the CLI with zero configuration and it behaves sensibly. But when a team shares it, or automation runs unattended, you’ll want control: which organization commands target, which actions run freely, which ones ask first, and which are blocked outright. Settings and permission rules give you that control, and one command shows you exactly where every value came from.
Settings merge across six scopes. Later scopes win for single values, so the list runs from weakest to strongest:
- Defaults built into the CLI.
- User: your personal settings, applied everywhere you use the CLI.
- Project: settings in a workspace’s
.tallyfyfolder, committed and shared with teammates. - Local: your personal overrides for one workspace, kept out of version control.
- Flags: whatever you pass on the command line, including
--settingswith a JSON file or inline JSON. - Managed: policy your company sets centrally. It outranks everything.
Two merge behaviors matter. Single values (like the default output format) simply get overridden by the stronger scope. List values (permissions, hooks, and MCP servers) merge across scopes instead, so a project can add rules without erasing yours.
When a setting isn’t doing what you expect, ask the CLI to show its work:
tallyfy config list --show-sourcesThat lists every effective setting and which file set it. tallyfy config get prints one resolved value, and tallyfy config set writes a value into a chosen scope’s settings file.
Every rule names a resource and a verb, like Task(complete) or Blueprint(delete), and assigns one of three answers:
- Allow: the action runs without fuss. Read verbs like
listandgetare allowed by default. - Ask: the CLI asks you to confirm at the terminal. In a script with no terminal, ask becomes deny unless the command carries
--yes. - Deny: the action is blocked. Deny always wins, no matter what another scope allows.
This is how you give a shared automation account a narrow job: allow the two verbs it needs, deny the rest, and sleep fine. A ready-made read-only example lives in the CI/CD approval gates guide.
The managed scope is for company-wide policy: it can force which organization the CLI targets and lock permission rules so individual users can’t loosen them. Because managed sits above every other scope, a laptop’s local settings can never override it.
Hooks are your own scripts that run around CLI commands, and they can block a command from running at all. A blocked command exits with code 8, so automation notices.
Because project hooks execute code on your machine, they’re gated behind trust. Hooks defined in a workspace’s .tallyfy/settings.json run only after you’ve explicitly trusted that workspace:
tallyfy trust # trust the current workspacetallyfy trust status # is it trusted?tallyfy trust remove # revoke trustThe point: cloning a stranger’s repository must never be enough to run commands on your computer just because you used the CLI inside it.
tallyfy doctor runs read-only checks across configuration, credential source, API reachability, the active organization, permission-rule validity, and the credential backend, then reports what’s healthy and what isn’t. It’s the first command to run when anything misbehaves.
(Skip this unless you’re setting up the technical side.)
A permissions block in a settings file looks like this, with rules merged across scopes and deny winning every conflict:
{ "permissions": { "allow": ["Task(list)", "Task(get)", "Task(complete)"], "ask": ["Process(launch)"], "deny": ["Blueprint(delete)"] }}Useful details:
- The active organization is stored in the CLI’s state file (state.json). Resolution order for org targeting: the
--orgflag, then an org setting, then the org chosen withtallyfy org use. A managed forceOrg policy overrides them all. --settingsaccepts either a path to a JSON file or an inline JSON object, which is handy for one-off runs and CI jobs.tallyfy doctorvalidates your permission rules, so run it after editing settings files by hand.
Was this helpful?
- 2026 Tallyfy, Inc.
- Privacy Policy
- Terms of Use
- Report Issue
- Trademarks