AgentSkillsCN

agentpass

通过 agentpass 安全网关控制 Home Assistant 设备。当用户希望操控灯光、开关、传感器、温控设备,或任何智能家居设备时,亦或需要查询设备状态、历史记录,或检查 Home Assistant 配置时,均可使用此功能。所有具有破坏性的操作均需经由 Telegram 进行人工审批。

SKILL.md
--- frontmatter
name: agentpass
description: "Control Home Assistant devices through the agentpass security gateway. Use when the user asks to control lights, switches, sensors, climate, or any smart home device — or when checking device states, history, or Home Assistant configuration. All destructive actions require human approval via Telegram."
homepage: https://github.com/TorbenWetter/agentpass
metadata: {"openclaw":{"emoji":"🔐","os":["linux","darwin"],"requires":{"bins":["agentpass"],"env":["AGENTPASS_URL","AGENT_TOKEN"]},"install":[{"id":"pip-agentpass","kind":"uv","package":"agentpass","bins":["agentpass"],"label":"Install agentpass CLI"}]}}

agentpass — Home Assistant Gateway

Execute Home Assistant actions through a secure approval gateway. Read-only queries execute instantly. State-changing actions (turning lights on/off, calling services) are sent to a human guardian on Telegram for approval before execution.

IMPORTANT: The agentpass request command is a BLOCKING command. For tools that need approval, it will wait up to 15 minutes for the guardian to respond on Telegram. Do NOT background this command — wait for it to complete. The command returns the actual execution result once approved, or an error if denied/timed out. Do NOT tell the user to "check Telegram" or "approve the request" — just wait silently for the command to finish and then report the result.

Commands

List available tools

bash
agentpass tools

Execute a tool

bash
agentpass request <tool_name> [key=value ...]

Output is JSON on stdout. Errors go to stderr. Exit codes: 0 = success, 1 = denied, 2 = timeout, 3 = connection error, 4 = invalid args.

Available Tools

Read-only (auto-approved, instant)

Get a single entity state:

bash
agentpass request ha_get_state entity_id=light.living_room

Get all entity states:

bash
agentpass request ha_get_states

List available HA services and their fields:

bash
agentpass request ha_get_services

Get state history for an entity (last 24h):

bash
agentpass request ha_get_history entity_id=sensor.temperature

Get logbook entries for an entity (last 24h):

bash
agentpass request ha_get_logbook entity_id=light.living_room

Get Home Assistant configuration:

bash
agentpass request ha_get_config

Requires human approval (command blocks until resolved)

Call a Home Assistant service:

bash
agentpass request ha_call_service domain=light service=turn_on entity_id=light.living_room
agentpass request ha_call_service domain=light service=turn_on entity_id=light.bedroom brightness=128 color_name=red
agentpass request ha_call_service domain=switch service=toggle entity_id=switch.fan
agentpass request ha_call_service domain=climate service=set_temperature entity_id=climate.thermostat temperature=21

The domain and service args are used for the URL path. All other args (entity_id, brightness, color_name, temperature, etc.) are sent as the JSON request body.

Render a Home Assistant template:

bash
agentpass request ha_render_template template="{{ states('sensor.temperature') }} degrees"

Always denied (blocked by policy)

  • ha_fire_event — firing custom events is blocked
  • ha_call_service with domain=lock — lock control is blocked

Important Notes

  • entity_id format: Always domain.object_id, e.g. light.living_room, sensor.temperature, switch.garden_pump. Must be lowercase with underscores.
  • domain/service format: Lowercase with underscores, e.g. light, turn_on, set_temperature.
  • Approval timeout: If the human guardian doesn't respond within 15 minutes, the request is automatically denied.
  • Discover entities first: If you don't know an entity's ID, run ha_get_states to list all entities, or ha_get_services to see available services and their parameters.
  • Service parameters: Use ha_get_services to discover which parameters a service accepts (e.g. brightness, color_name, rgb_color, temperature, hvac_mode).