This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
mobilecritical PriorityID: tauri-v2-multiwindow-ipc-capability-sandboxing

Tauri 2.0 Webview Window Isolation & IPC Capability Sandboxing

Enforces granular per-window IPC capability manifests in Tauri 2.0 mobile and multi-webview architectures. Restricts OS-level plugin access, native invoke commands, and IPC events to explicitly bound window labels, preventing untrusted or auxiliary webviews from escalating privileges to host operating system APIs.

Prohibited Anti-Pattern: Wildcard window capability assignments and unpartitioned IPC commands enabling cross-window privilege escalation.

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Tauri 2.0 Webview Window Isolation & IPC Capability Sandboxing - Enforces granular per-window IPC capability manifests in Tauri 2.0 mobile and multi-webview architectures. Restricts OS-level plugin access, native invoke commands, and IPC events to explicitly bound window labels, preventing untrusted or auxiliary webviews from escalating privileges to host operating system APIs.
globs: src-tauri/capabilities/**/*.json, src-tauri/tauri.conf.json, src/**/*.{ts,tsx}, src-tauri/src/**/*.rs
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/tauri-v2-multiwindow-ipc-capability-sandboxing"
---

# Tauri 2.0 Webview Window Isolation & IPC Capability Sandboxing

> **Severity**: CRITICAL | **Category**: mobile
> **Anti-Pattern Warning**: Wildcard window capability assignments and unpartitioned IPC commands enabling cross-window privilege escalation.

## System Constraints
You are a Principal Security Architect enforcing Tauri 2.0 Multi-Window Webview IPC Capability Sandboxing. Mandate strict window isolation, granular capability JSON manifests, caller window verification in native commands, and zero-trust secondary webviews.

## Strict Guidelines
- Engineers MUST ALWAYS declare isolated capability configuration files per window role under `src-tauri/capabilities/` and explicitly list window identifiers instead of wildcards.
- Engineers MUST NOT assign sensitive OS plugins (fs, shell, biometric, deep-link, process) to auxiliary, authentication, or external webview instances.
- Native Rust command handlers MUST inspect caller identity via `tauri::Webview` or `tauri::Window` labels when executing privileged side-effects.
- Services MUST gracefully handle capability permission denials (`CommandNotFound` or permission errors) on secondary webview frontends.
- Components NEVER trigger privileged OS-level plugin calls from dynamically injected or external webview contexts.

## Bad vs Good Implementations
### Granular Window Creation and Sandboxed Invoke Execution

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Creates a secondary webview that inherits unbounded global default permissions and handles sensitive host tokens across unisolated webview boundaries without validating window context or enforcing isolated capabilities.
```typescript
import { invoke } from '@tauri-apps/api/core';
import { WebviewWindow } from '@tauri-apps/api/webviewWindow';

// ANTI-PATTERN: Spawning secondary window without security boundaries
// Assumes default capabilities give all windows raw FS and IPC access
export async function openAuthPortal(authUrl: string) {
  const authWindow = new WebviewWindow('auth-window', {
    url: authUrl,
    // Inherits broad default permissions; vulnerable if redirected
  });

  authWindow.once('tauri://created', async () => {
    // Exposes native system calls to arbitrary webview contexts
    const token = await invoke<string>('read_secure_token');
    await authWindow.emit('token-ready', { token });
  });
}
```

#### Production Standard (Correct)
> **Standard**: Binds auxiliary webviews to explicit capability contexts, preventing privilege escalation. The frontend handles permission rejections from capability-sandboxed native plugins gracefully.
```typescript
import { invoke } from '@tauri-apps/api/core';
import { WebviewWindow } from '@tauri-apps/api/webviewWindow';

// PRODUCTION FIX: Sandboxed window creation with restricted capabilities
export async function openAuthPortal(authUrl: string): Promise<WebviewWindow> {
  // Window label 'auth-portal' is mapped to a strictly scoped capability file
  // in `src-tauri/capabilities/auth-portal.json` denying raw filesystem and shell
  const authWindow = new WebviewWindow('auth-portal', {
    url: authUrl,
    incognito: true,
    acceptFirstMouse: false
  });

  authWindow.once('tauri://error', (e) => {
    console.error('Auth webview initialization error:', e);
  });

  return authWindow;
}

export async function fetchWindowScopedData(): Promise<string | null> {
  try {
    // Privileged command will fail with permission error if called from 'auth-portal'
    return await invoke<string>('plugin:secure-storage|read_token');
  } catch (error: unknown) {
    console.warn('Execution blocked by Tauri capability sandbox:', error);
    return null;
  }
}
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Tauri 2.0 Webview Window Isolation & IPC Capability Sandboxing

Tauri 2.0 Webview Window Isolation & IPC Capability Sandboxing defines an industrial-grade behavioral standard for mobile engineering. Enforces granular per-window IPC capability manifests in Tauri 2.0 mobile and multi-webview architectures. Restricts OS-level plugin access, native invoke commands, and IPC events to explicitly bound window labels, preventing untrusted or auxiliary webviews from escalating privileges to host operating system APIs. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Wildcard window capability assignments and unpartitioned IPC commands enabling cross-window privilege escalation. Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftWildcard window capability assignments and unpartitioned IPC commands enabling cross-window privilege escalation.Critical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS declare isolated capability configuration files per window role under `src-tauri/capabilities/` and explicitly list window identifiers instead of wildcards.

Engineers MUST ALWAYS declare isolated capability configuration files per window role under `src-tauri/capabilities/` and explicitly list window identifiers instead of wildcards.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST NOT assign sensitive OS plugins (fs, shell, biometric, deep-link, process) to auxiliary, authentication, or external webview instances.

Engineers MUST NOT assign sensitive OS plugins (fs, shell, biometric, deep-link, process) to auxiliary, authentication, or external webview instances.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Native Rust command handlers MUST inspect caller identity via `tauri

Native Rust command handlers MUST inspect caller identity via `tauri::Webview` or `tauri::Window` labels when executing privileged side-effects.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Services MUST gracefully handle capability permission denials (`CommandNotFound` or permission errors) on secondary webview frontends.

Services MUST gracefully handle capability permission denials (`CommandNotFound` or permission errors) on secondary webview frontends.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Components NEVER trigger privileged OS-level plugin calls from dynamically injected or external webview contexts.

Components NEVER trigger privileged OS-level plugin calls from dynamically injected or external webview contexts.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Tauri 2.0 Webview Window Isolation & IPC Capability Sandboxing critical for AI coding assistants?

Enforces granular per-window IPC capability manifests in Tauri 2.0 mobile and multi-webview architectures. Restricts OS-level plugin access, native invoke commands, and IPC events to explicitly bound window labels, preventing untrusted or auxiliary webviews from escalating privileges to host operating system APIs. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Wildcard window capability assignments and unpartitioned IPC commands enabling cross-window privilege escalation.) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

Related MOBILE Rules

View all rules →
1 Rule in Stack

Tauri