remove Signer
Removes a signer from a context rule by its ID.
Removes the signer with the given ID from the specified context rule on the smart account contract. The signer ID is assigned by the contract when the signer is added and is available via ParsedContextRule.signerIds after fetching the context rule.
The transaction requires authorization from an existing signer on the specified context rule.
IMPORTANT: You cannot remove the last signer from a context rule unless the rule has policies that provide authorization. The contract will throw error 3004 if you attempt to remove the last signer with no policies configured.
Contract call: smart_account.remove_signer(context_rule_id, signer_id)
Return
TransactionResult indicating success or failure
Parameters
The context rule ID to remove the signer from
The on-chain signer ID assigned by the contract (available from ParsedContextRule.signerIds)
Optional list of signers for multi-signer authorization. When empty (default), uses single-signer auth with the connected passkey. When non-empty, coordinates signatures from all listed signers.
Optional submission method override. When null (default), uses the configured submission method (relayer if available, RPC otherwise).
Throws
if no wallet is connected
if simulation, signing, or submission fails
if biometric authentication fails
Example:
// Fetch the parsed context rule to get signer IDs
val rules = kit.contextRuleManager.listContextRules()
val rule = rules.first { it.id == 0u }
val signerIdToRemove = rule.signerIds.first()
val result = signerManager.removeSigner(
contextRuleId = 0u,
signerId = signerIdToRemove
)Removes a signer from a context rule by matching the signer value.
Convenience overload that resolves the on-chain signer ID internally. Fetches the specified context rule (single RPC call), finds the matching signer by equality, and delegates to the ID-based removeSigner. Use this when you have the SmartAccountSigner object but not the numeric signer ID.
Return
TransactionResult indicating success or failure
Parameters
The context rule ID to remove the signer from
The signer to remove (matched by equality against the rule's signers)
Optional list of SelectedSigner for multi-signer authorization.
Optional submission method override.
Throws
if no wallet is connected
if the signer is not found on the context rule
if simulation, signing, or submission fails
if biometric authentication fails
Example:
val result = kit.signerManager.removeSigner(
contextRuleId = 1u,
signer = DelegatedSigner(address = "GA7Q...")
)