> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://ensforge.com/api/mcp` to find what you need.

# Update a text record

Let an HCA update the description of a name you already manage. This guide connects account
deployment, resolver permissions and a session-signed intent in one flow.

## Before you start

Follow [Rhinestone getting started](/hca/rhinestone/getting-started) to install the packages and configure
your provider. These examples run on a server with Sepolia clients. Keep signing keys on the server.

You need:

* `ENSFORGE_SEPOLIA_RPC_URL` and `ENSFORGE_SEPOLIA_PRIVATE_KEY` for the owner wallet.
* `RHINESTONE_API_KEY` and `ENSFORGE_HCA_SESSION_PRIVATE_KEY` for the session signer.
* Sepolia ETH in the owner wallet for deployment and permission transactions, plus session enablement.
* A name managed by that wallet with a resolver that supports record permissions.

## Deploy, authorize and update

Copy the files below into the same directory. Replace `your-name.eth` in `permissions.ts` with your
name, then run `rhinestone-update-description.ts` using your TypeScript runner.

The entry point imports deployment first, then checks the HCA's permission to change `description`.
It enables a one-hour session scoped to the resolver before submitting the update. The final read verifies the saved value.

:::code-group
```ts [rhinestone-update-description.ts]
// [!include ~/snippets/hca/guides/rhinestone-update-description.ts]
```

```ts [deploy.ts]
// [!include ~/snippets/hca/guides/deploy.ts]
```

```ts [permissions.ts]
// [!include ~/snippets/hca/guides/permissions.ts]
```

```ts [session.ts]
// [!include ~/snippets/hca/guides/session.ts]
```

```ts [rhinestone.ts]
// [!include ~/snippets/hca/guides/rhinestone.ts]
```

```ts [account.ts]
// [!include ~/snippets/hca/guides/account.ts]
```

```ts [client.ts]
// [!include ~/snippets/hca/guides/client.ts]
```
:::

The permission request uses `allowScopeWidening: false`. If the resolver cannot grant only the
requested access, resolve that permission requirement before continuing. See
[Accounts and permissions](/hca/guides/accounts) for the supported scopes.

## Track the result

Keep the logged submission until the operation settles. If the wait times out, use
`getHcaExecutionStatus({ submission, execution })` with the same submission instead of sending the
update again. A `succeeded` outcome followed by a matching record read completes the flow.

## Reuse the session

Deployment, permission grants and session enablement are setup steps. For subsequent updates,
reuse the adapter, signer and authorization with a new `executeHcaCalls` call. Do not run the whole
setup script on each request. The session key and HCA need no ETH for this sponsored flow.

When the app no longer needs access, follow [Revoke app access](/hca/rhinestone/revoke-access).
