# execute-proxy-announced (/docs/tx/execute-proxy-announced)

The delayed-proxy flow: a delegate added with `delay` > 0 first announces
the call's hash, waits out the delay (during which the real account can
veto), then anyone may dispatch the announced call with this intent. The
inner call is given as an intent op name plus its arguments and must hash
to exactly what was announced. Fails if the delay has not elapsed or no
matching announcement exists.

| Signer    | Pallet | Wraps                   |
| --------- | ------ | ----------------------- |
| `coldkey` | Proxy  | `Proxy.proxy_announced` |

## Parameters [#parameters]

| Parameter          | Type   | Required | Description                                                                                              |
| ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------- |
| `delegate_ss58`    | string | yes      | Delegate that made the announcement.                                                                     |
| `real_ss58`        | string | yes      | Account the call executes as (the delegation's grantor).                                                 |
| `inner_op`         | string | yes      | Intent op name of the announced call (see btcli tools for the catalog).                                  |
| `inner_args`       | object | yes      | Arguments of the announced call, as a JSON object.                                                       |
| `force_proxy_type` | string | no       | Require the delegation to be exactly this proxy type instead of accepting any type that covers the call. |

Address parameters (`--hotkey`, `--coldkey`, `--dest`, ...) accept a raw ss58
address, an address-book or proxy-book name, or a local wallet/hotkey name.

## CLI [#cli]

Preview with `--dry-run` (shows fee, effects, and policy result without
submitting), then submit:

```bash
btcli tx execute-proxy-announced \
  --delegate <ss58|name> \
  --real <ss58|name> \
  --inner-op <value> \
  --inner-args '<json>' --dry-run
btcli tx execute-proxy-announced \
  --delegate <ss58|name> \
  --real <ss58|name> \
  --inner-op <value> \
  --inner-args '<json>' -w my_coldkey
```

## Python [#python]

```python
import bittensor as sub
from bittensor.wallet import Wallet

wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = sub.ExecuteProxyAnnounced(delegate_ss58="5F...", real_ss58="5F...", inner_op="...", inner_args={...})

async with sub.Client("finney") as client:
    plan = await client.plan(intent, wallet)   # fee, effects, policy — no submission
    result = await client.execute(intent, wallet)
    if not result.success:
        print(result.error.code, result.error.remediation)
```

Or build it by op name, as an agent would:

```python
await client.execute_tool("execute_proxy_announced", {...}, wallet)
```
