This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.5.1 instead.
Reason given by maintainers: Declares Python 3.9 support but requires 3.10; crashes on import"
Agentsward
A guardrail layer for autonomous coding agents. Agentsward classifies the risk of every shell command and file edit your AI coding agent attempts, routes the risky ones to your phone for approval, and — critically — denies by default when no one responds. Every decision is logged.
Not a remote-control app. Anthropic's Remote Control already lets you drive a Claude session from your phone. Agentsward is the policy layer underneath: it decides what an agent is allowed to do, enforces protected files unconditionally, fails safe, and is built to gate any agent — not just one vendor's.
Why it exists
Native permission prompts (and Remote Control's mirrored version of them) ask "allow this?" with no risk model, no protected-file enforcement, and no fail-safe: ignore the prompt and nothing is denied. Agentsward adds the missing governance layer:
| Native prompt / Remote Control | Agentsward | |
|---|---|---|
| Risk classification | — | CRITICAL → LOW, defaults to "ask" |
Protected files (.env, CI, lockfiles, .claude/) |
— | Always re-affirm, bypass auto-allow |
| No-response behavior | nothing denied | default-deny (fail-safe timeout) |
| Phone-set guards / auto-rules | — | yes |
| Audit trail | — | every classify/approve/deny logged |
How it works
A PreToolUse hook intercepts the agent's tool call, a classifier scores it, and:
- LOW → auto-approve.
- CRITICAL → auto-deny.
- MEDIUM / HIGH → sent to your phone with a diff/snippet; blocks until you decide.
- Protected file (gate config, secrets, supply-chain/CI) → always reaches you, regardless of score.
- No decision within the timeout → deny (fail-safe).
Install
pip install agentsward # the CLI command is `agentsward`
agentsward setup # one step: pair phone + wire every installed agent
agentsward setup (or agentsward install) auto-detects and wires Claude Code, OpenAI Codex, and Google Gemini CLI — whichever are installed. To target one explicitly:
agentsward install --claude # Claude Code (or install-hooks / --global for all projects)
agentsward install --codex # OpenAI Codex (or install-codex-hooks)
agentsward install --gemini # Google Gemini CLI (or install-gemini-hooks)
agentsward install --all # every supported agent
Then restart the agent you wired — Claude Code (or run /hooks), Codex, or Gemini (in auto-accept/YOLO so the phone is the sole gate). It's idempotent and leaves any other hooks in place.
Approval channels
Agentsward is transport-agnostic — the gate is the product, the channel is a detail:
- Telegram (default, zero infra):
agentsward init # bot token + chat id
- Cloud relay + mobile app (approvals from anywhere):
agentsward pair # link this machine to the phone app
Quick manual test (no agent needed):
agentsward approve-command "git push origin main" # exits 0 (allow) / 1 (deny)
Approval modes (agentsward mode)
| Mode | Who approves | Use when |
|---|---|---|
phone (default) |
Only your phone. The local popup is suppressed — the hook tells Claude Code allow/deny directly, so work continues the instant you tap. | You're away, or don't want anyone at the keyboard approving for you. |
laptop |
Only the local prompt. No phone notifications; the hook steps aside. | You're at the desk and don't want phone pings. |
agentsward mode laptop takes effect immediately (read at runtime).
Claude Code hook
install-hooks wires the gating + notification hooks with the correct local path filled in.
The gating hook looks like:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{ "type": "command", "command": "agentsward hook --timeout 1800", "timeout": 1800 }
]
}
]
}
}
- Critical invariant: the inner
--timeoutmust be ≤ the outer"timeout", or Claude Code kills the hook before your phone can respond.install-hookskeeps them matched. - Hook config changes take effect only after restarting Claude Code (snapshotted at session start). Hook code is live with an editable install.
Other commands
agentsward logs -n 20 # activity timeline
agentsward pending # is a command awaiting me, or did it stop?
agentsward resume # lift a Stop kill-switch
agentsward instructions # show instructions sent from the phone
Storage
All state lives in ~/.agentsward/: config.json, approvals.json, instructions.json,
audit_log.json.
License
Proprietary. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentsward-0.5.0.tar.gz.
File metadata
- Download URL: agentsward-0.5.0.tar.gz
- Upload date:
- Size: 87.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12bcf0cdb37914c759c0f8114277a5bfc6ae25295a515f657a08e15755945d66
|
|
| MD5 |
924c0030f0b41b47bbc736109a0e00d8
|
|
| BLAKE2b-256 |
81fcb33e4ef7e150ea00de1b7fa57901157c52bde7cbf3066d9f473b420c9889
|
File details
Details for the file agentsward-0.5.0-py3-none-any.whl.
File metadata
- Download URL: agentsward-0.5.0-py3-none-any.whl
- Upload date:
- Size: 93.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78bbc7547f3c90669279d45795d12a1be0442454046beaebed237c70c7eed804
|
|
| MD5 |
5696cb36623e5cd108302258c0b6b295
|
|
| BLAKE2b-256 |
96bf978028710b8350eba3e44041872f159f2a6c19cf271cc6d7fd90cb4826e8
|