# `useRevokePermissions`

Revoke permissions previously granted to session keys.

## Usage

```tsx
import { useRevokePermissions } from '@openfort/react';

function RevokeSessionKey() {
  const { revokePermissions, isLoading } = useRevokePermissions();

  const handleRevoke = async (sessionKeyAddress: `0x${string}`) => {
    const { error } = await revokePermissions({
      sessionKey: sessionKeyAddress,
    });

    if (!error) console.log('Session key revoked');
  };

  return (
    <button onClick={() => handleRevoke('0x...')} disabled={isLoading}>
      Revoke Session Key
    </button>
  );
}
```

## Return type

```ts
type UseRevokePermissionsReturn = {
  revokePermissions(params: RevokePermissionsParams, options?: RevokePermissionsHookOptions): Promise<RevokePermissionsHookResult>
  data: SessionResponse | null
  reset(): void
  isLoading: boolean
  isError: boolean
  isSuccess: boolean
  error: OpenfortError | null | undefined
}

type RevokePermissionsHookResult = {
  error?: OpenfortError
} & Partial<SessionResponse>

// SessionResponse from @openfort/openfort-js
type SessionResponse = {
  id: string
  object: 'session'
  address: string
  // ... session details
}
```

## Hook options

Configure default behavior when initializing the hook.

```ts
type RevokePermissionsHookOptions = {
  onSuccess?: (data: RevokePermissionsHookResult) => void
  onError?: (error: OpenfortError) => void
  throwOnError?: boolean
}
```

## Parameters

### revokePermissions

Both hooks support an optional `walletClient` override for non-wagmi external wallets. Resolution order: explicit `walletClient` → wagmi bridge → embedded wallet fallback.

```ts
type RevokePermissionsParams = {
  sessionKey: Hex  // Session key (permissionContext) to revoke
}
```

## Related

* [Session Keys Guide](/docs/products/embedded-wallet/react/wallet/actions/session-keys)
* [useGrantPermissions](/docs/products/embedded-wallet/react/hooks/useGrantPermissions)
