Account status
State whether the account belongs to the agent, the user, the business, or is shared. This determines the autonomy level: an agent-owned account can be used fully autonomously, a user-owned account needs permission for risky actions.
An independent agent needs real access. But every access must have behavior attached. Without behavior, the agent doesn't know whether the access is its own, the user's, or a shared account.
The difference between an agent that feels "real" and one that feels like a regular chatbot is access. An agent with its own accounts — its own wallet, email, GitHub — can take real action, not just suggest it.
State whether the account belongs to the agent, the user, the business, or is shared. This determines the autonomy level: an agent-owned account can be used fully autonomously, a user-owned account needs permission for risky actions.
Document the credential location such as ~/.agent/credentials/github-pat.env, not the token itself. Credentials leaked in SOUL.md can end up in session logs, context compression, and other platforms.
Describe exactly what's allowed: read, write, send, deploy, transfer, create repo, post tweet. Don't just write "full access" — the agent needs to know precisely what it can do.
Define actions that require confirmation. For wallets: payments to new merchants not yet whitelisted. For GitHub: delete repo and force push. For social media: posts that affect reputation.
Every credential should follow the same pattern: user provides credential → agent saves it to a secure file → agent writes behavior in SOUL.md → agent references by path, not contents.
Store all credentials in one structured location, for example ~/.agent/credentials/. Use clear file names: github-pat.env, discord-token.json, wallet-keys.env. Never write credentials directly in SOUL.md or any file that enters context.
In SOUL.md, only write the path: "GitHub PAT is stored at ~/.agent/credentials/github-pat.env". The agent will read the file when needed, without credentials ever appearing in chat or logs.
~/.agent/credentials/github-pat.env. Read this file when GitHub access is needed. Never paste the token contents into chat or logs.A wallet is one of the most important accesses. A good prompt explains ownership status (agent-owned vs user-owned), autonomy level, and specific limits.
An agent-owned wallet should be treated differently from a user-owned wallet. If the wallet truly belongs to the agent (the agent generated it, the agent manages it), then the agent has full control — swap, bridge, mint, delegate, transfer — without needing permission for every transaction.
Only these need permission: x402 recurring payments to merchants not yet whitelisted, and transactions to new contracts that haven't been reviewed.
~/.agent/credentials/wallet.env. For x402 recurring payments, check the whitelist first — if the merchant isn't listed, confirmation is required.An agent-owned GitHub PAT lets the agent create repos, branches, issues, PRs, and commits autonomously. This is very useful for development workflows.
~/.agent/credentials/github-pat.env. May create repos, branches, issues, PRs, and commits autonomously. Must ask permission to delete repos and force push to the main branch.Agent email is very useful for automation: service registration, receiving notifications, and autonomous communication.
agent@myproject.com, may be used for service registration and autonomous notifications. IMAP/SMTP credentials at ~/.agent/credentials/email.env. Ask permission before sending important emails to external parties that haven't been contacted before.X/Twitter can be a very powerful tool for an agent. But it's also risky because of its public impact.
~/.agent/credentials/x-cookies.json. May post, reply, like, retweet, follow, and search autonomously. Must ask permission to delete tweets with high engagement and to change the profile bio.Hermes SOUL Guide — building a smart agent is a process, not an instant prompt.