# manage_shell_access

> Check, enable or disable shell (SSH) access for the assistant on a hosting account — the one-time step behind `run_shell_command`, `list_processes` and `find_files`.

- Tier: W
- Required scope: read:hosting
- Annotations: idempotentHint
- Docs: https://api.inleed.com/tools/manage-shell-access

## Description

Check, enable or disable shell (SSH) access for the assistant on a hosting account — the one-time step behind `run_shell_command`, `list_processes` and `find_files`. `action=status` returns `{sshEnabled, enabled, fingerprint, lastUsedAt, toolchain, cheatsheet}`: `toolchain` lists the versions of php, wp, composer, node, git, python3 and mysql the account can run, and `cheatsheet` is the account map to read before composing any command — each domain's docroot, which archived logs,.htaccess, debug.log and stats exist, the PHP default and binaries, the mailboxes and their sizes, directory sizes, plus `recipes`: proven one-liners (archived error summary, top paths and IPs, status codes, php mail log, disk hogs, malware sweep, php limits, reachability, DNS, SSL expiry). Its `logs` section says which logs the shell cannot read (the live access/error logs are root-only — use read_logs and get_site_stats for those). `enable` returns `{status:"confirmation_required", confirmationUrl, …}`: the customer approves a card once, after which an SSH key of the assistant’s own is authorized on the account and every command runs AS the account user (never an administrator); it also turns SSH on for the account when it is off.

## Input schema

- `input` — string (required). A domain, email address, website URL, numeric service id, or hosting-account username the customer actually owns. Resolved to the owning account automatically; the resolved target is echoed back in the response.
- `action` — enum (required). status (read), enable (creates a confirmation the customer approves; needs shell:hosting) or disable (removes the key at once; needs shell:hosting). One of status, enable, disable.
- `attempt_key` — string. Optional idempotency key for enable: a repeat within an hour returns the same pending confirmation instead of creating a second one.

## Example call

```json
{
  "name": "manage_shell_access",
  "arguments": {
    "input": "example.se",
    "action": "status"
  }
}
```

