Skip to content

Security

The [trust] section in agents.toml controls which skill sources are allowed. Trust is validated before any network operations in add and install. If a source does not match the policy, the command fails immediately.

When [trust] is absent, all sources are allowed. This is the default for backward compatibility.

# No [trust] section -- all sources allowed
version = 1
agents = ["claude"]
[[skills]]
name = "any-skill"
source = "anyone/any-repo"

Add a [trust] section to restrict sources to an allowlist. A source passes if it matches any rule.

[trust]
github_orgs = ["getsentry", "my-company"]
github_repos = ["external-org/one-approved-repo"]
git_domains = ["git.corp.example.com"]
FieldMatchesExample
github_orgsGitHub sources where the owner matches"getsentry" matches getsentry/skills, getsentry/warden
github_reposExact owner/repo match"external-org/one-approved-repo"
git_domainsDomain extracted from git: URLs"git.corp.example.com" matches git:https://git.corp.example.com/team/repo

Local path: sources are always allowed regardless of trust configuration.

You can also manage trusted sources from the CLI instead of editing TOML directly:

Terminal window
dotagents trust add getsentry # trust a GitHub org
dotagents trust add external-org/specific-repo # trust a specific repo
dotagents trust add git.corp.example.com # trust a git domain
dotagents trust list # show trusted sources

When defaultRepositorySource = "gitlab", shorthand trust sources are stored as GitLab domain rules, such as gitlab.com/my-company.

Use allow_all = true to make the intent explicit in shared repositories. This is functionally the same as omitting the section, but communicates that the choice was deliberate.

[trust]
allow_all = true

agents.lock tracks which skills are managed and where they came from. It is auto-generated and should be gitignored.

# Auto-generated by dotagents. Do not edit.
version = 1
[skills.find-bugs]
source = "getsentry/skills"
resolved_url = "https://github.com/getsentry/skills.git"
resolved_path = "plugins/sentry-skills/skills/find-bugs"
resolved_commit = "0123456789abcdef0123456789abcdef01234567"
FieldDescription
sourceOriginal source from agents.toml
resolved_urlResolved git clone URL or HTTP base URL
resolved_pathSubdirectory within repo where skill was found
resolved_refResolved ref name, omitted for default branch
resolved_commitInstalled commit SHA. Informational only

Local path: skills have source only.

Cloned repositories are cached at ~/.local/dotagents/, and you can override that with DOTAGENTS_STATE_DIR.

  • Shallow clone per git source.
  • All git operations are non-interactive with GIT_TERMINAL_PROMPT=0.
  • Git sources refresh on every install.
  • Well-known HTTPS sources use a 24-hour TTL.