sui-seal

Encrypt Sui data client-side with Move-defined onchain access policies.

4|Updated Feb 13, 2026
One-click install
npx skills add https://github.com/widnyana/eyay-toolkits --skill sui-seal-widnyana
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: sui-seal
Source: https://github.com/widnyana/eyay-toolkits/tree/main/plugins/sui-dev-tools/skills/sui-seal
Command: npx skills add https://github.com/widnyana/eyay-toolkits --skill sui-seal-widnyana

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps you securely integrate Mysten Labs Seal on Sui so that user data can be encrypted client-side while decryption is automatically gated by Move-defined onchain access policies.

Core Features & Use Cases

  • Move policy entrypoints (seal_approve*): Defines permissioned decryption flows that must abort on denied access and remain side-effect free for dry-run evaluation.
  • TypeScript encryption and decryption: Uses the @mysten/seal SDK to encrypt data (typically on Walrus) and to decrypt via key servers after policy checks.
  • Efficient key fetching (fetchKeys): Supports batch decryption to avoid repeated key-server calls when decrypting many blobs.
  • Envelope encryption guidance: Recommends wrapping a small Seal-encrypted DEK around large AES-encrypted payloads to enable key-server rotation without re-encrypting the bulk data.

Quick Start

Ask the AI to generate a minimal Move seal_approve* policy module plus the TypeScript code that encrypts data for a chosen identity and decrypts it for an authorized user using a single batched PTB flow.

Frequently Asked Questions about sui-seal

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I encrypt user data client-side and gate decryption with Sui Move onchain policies?

To encrypt user data client-side with onchain-gated decryption, use the Sui Seal framework to encrypt data via the TypeScript SDK and define `seal_approve*` Move policy functions that authorize decryption based on onchain access rules.

What is Sui Seal envelope encryption and when do I need it for Walrus blobs?

Sui Seal envelope encryption wraps a small Seal-encrypted Data Encryption Key around large AES-encrypted payloads. You need it for Walrus blobs to enable key-server rotation without re-encrypting bulk data.

How do I implement a `seal_approve*` Move policy module for deterministic decryption checks?

Implement `seal_approve*` Move policy modules as deterministic, side-effect-free entry functions taking an `id: vector<u8>` argument, ensuring they abort on denied access to pass dry-run evaluation constraints.

How do I fetch decryption keys for multiple encrypted identities in a single batch?

Fetch decryption keys for multiple encrypted identities in a single batch by using the `@mysten/seal` SDK's `fetchKeys` function within a batched PTB flow, avoiding repeated key-server calls.

Why does my Sui Seal dry-run evaluation fail when checking onchain access policies?

Sui Seal dry-run evaluation fails when onchain access policy checks occur if your `seal_approve*` Move entry functions contain side effects, lack determinism, or fail to abort on denied access.

Can I use the `@mysten/seal` TypeScript SDK with a Sui SessionKey for session-based decryption?

Yes, you can use the `@mysten/seal` TypeScript SDK with a Sui `SessionKey` to manage session-based decryption, enabling secure key server interactions after verifying Move-defined onchain access policies.