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

Tauri 2.0 Mobile Scoped IPC Capability Schema Boundary

Enforces strict compile-time capabilities and granular permission scoping on all Tauri 2.0 mobile IPC bridges. Mitigates native privilege escalation via compromised webviews by isolating mobile window contexts, enforcing explicit command whitelists, and rejecting wildcard filesystem or shell permissions.

Prohibited Anti-Pattern: Wildcard Permissions and Unscoped Native Invocation in Mobile Webview Bridges

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Tauri 2.0 Mobile Scoped IPC Capability Schema Boundary - Enforces strict compile-time capabilities and granular permission scoping on all Tauri 2.0 mobile IPC bridges. Mitigates native privilege escalation via compromised webviews by isolating mobile window contexts, enforcing explicit command whitelists, and rejecting wildcard filesystem or shell permissions.
globs: src-tauri/capabilities/**/*.json, src-tauri/tauri.conf.json, src-tauri/src/**/*.rs, src/**/*.{ts,tsx}
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/tauri-mobile-scoped-ipc-capability-boundary"
---

# Tauri 2.0 Mobile Scoped IPC Capability Schema Boundary

> **Severity**: CRITICAL | **Category**: mobile
> **Anti-Pattern Warning**: Wildcard Permissions and Unscoped Native Invocation in Mobile Webview Bridges

## System Constraints
You are a Principal Software Architect enforcing Tauri 2.0 Mobile Scoped IPC Capability Schema Boundaries. You must mandate compile-time permission manifests, context isolation, and explicit parameter scoping on all inter-process bridge events between mobile webviews and native Rust plugins or platform APIs.

## Strict Guidelines
- Engineers MUST ALWAYS isolate mobile capabilities into dedicated manifests under `src-tauri/capabilities/` targeting specific mobile platforms (`android`, `ios`).
- Engineers MUST NOT grant wildcard permissions (`*:default`, `core:all`, `fs:allow-all`, `shell:allow-execute`) in mobile capability manifests.
- Code SHOULD validate and sanitize all IPC command payloads on the Rust host using serde-typed structs before calling native Android/iOS platform bindings.
- Services MUST restrict filesystem and storage access to runtime-scoped paths (`$APPDATA`, `$DOCUMENT`, `$CACHE`) using explicit capability path rules rather than arbitrary filesystem permissions.
- Components NEVER invoke dynamic unmapped strings via raw Tauri `invoke()` without compile-time contract definitions and custom permission scopes.

## Bad vs Good Implementations
### Tauri 2.0 Mobile Capability Manifest & Scoped IPC

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Using wildcard window selectors and unconstrained 'fs:allow-all' permissions exposes host-level files to privilege escalation if any third-party script runs inside the mobile webview. Direct unconstrained path inputs enable path traversal across the mobile sandbox boundary.
```typescript
// src-tauri/capabilities/mobile.json (INSECURE: Wildcard scope and unscoped file write)
// {
//   "$schema": "../gen/schemas/desktop-schema.json",
//   "identifier": "mobile-capability",
//   "windows": ["*"],
//   "permissions": ["core:default", "fs:allow-all"]
// }

import { invoke } from '@tauri-apps/api/core';

// TypeScript layer allows arbitrary filesystem writes across sandbox boundaries
export async function writeUserExport(path: string, payload: string): Promise<void> {
  await invoke('plugin:fs|write_file', { path, contents: Array.from(new TextEncoder().encode(payload)) });
}
```

#### Production Standard (Correct)
> **Standard**: Restricts permissions strictly to the 'main' window on mobile platforms ('android', 'ios'), locks down path access to a subfolder within '$APPDATA', and routes data through an audited, typed Rust command rather than exposing raw raw arbitrary fs APIs to the webview.
```typescript
// src-tauri/capabilities/mobile.json (SECURE: Scoped path permission & platform target)
// {
//   "$schema": "../gen/schemas/mobile-schema.json",
//   "identifier": "mobile-export-capability",
//   "platforms": ["android", "ios"],
//   "windows": ["main"],
//   "permissions": [
//     "core:event:default",
//     {
//       "identifier": "fs:scope-app-data-recursive",
//       "allow": [{ "path": "$APPDATA/exports/*" }]
//     }
//   ]
// }

import { invoke } from '@tauri-apps/api/core';

interface ExportPayload {
  readonly filename: string;
  readonly data: string;
}

// Native Rust command wraps and enforces destination constraints within $APPDATA
export async function writeUserExport(filename: string, payload: string): Promise<void> {
  // Sanitized filename, path resolution delegated to Rust command
  const sanitizedFilename = filename.replace(/[^a-zA-Z0-9._-]/g, '');
  if (!sanitizedFilename) {
    throw new Error('Invalid export filename');
  }
  await invoke<void>('export_secure_data', {
    payload: { filename: sanitizedFilename, data: payload } satisfies ExportPayload
  });
}
```

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 Mobile Scoped IPC Capability Schema Boundary

Tauri 2.0 Mobile Scoped IPC Capability Schema Boundary defines an industrial-grade behavioral standard for mobile engineering. Enforces strict compile-time capabilities and granular permission scoping on all Tauri 2.0 mobile IPC bridges. Mitigates native privilege escalation via compromised webviews by isolating mobile window contexts, enforcing explicit command whitelists, and rejecting wildcard filesystem or shell permissions. 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 Permissions and Unscoped Native Invocation in Mobile Webview Bridges 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 Permissions and Unscoped Native Invocation in Mobile Webview BridgesCritical
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 isolate mobile capabilities into dedicated manifests under `src-tauri/capabilities/` targeting specific mobile platforms (`android`, `ios`).

Engineers MUST ALWAYS isolate mobile capabilities into dedicated manifests under `src-tauri/capabilities/` targeting specific mobile platforms (`android`, `ios`).

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 grant wildcard permissions (`*

Engineers MUST NOT grant wildcard permissions (`*:default`, `core:all`, `fs:allow-all`, `shell:allow-execute`) in mobile capability manifests.

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

Code SHOULD validate and sanitize all IPC command payloads on the Rust host using serde-typed structs before calling native Android/iOS platform bindings.

Code SHOULD validate and sanitize all IPC command payloads on the Rust host using serde-typed structs before calling native Android/iOS platform bindings.

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 restrict filesystem and storage access to runtime-scoped paths (`$APPDATA`, `$DOCUMENT`, `$CACHE`) using explicit capability path rules rather than arbitrary filesystem permissions.

Services MUST restrict filesystem and storage access to runtime-scoped paths (`$APPDATA`, `$DOCUMENT`, `$CACHE`) using explicit capability path rules rather than arbitrary filesystem permissions.

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 invoke dynamic unmapped strings via raw Tauri `invoke()` without compile-time contract definitions and custom permission scopes.

Components NEVER invoke dynamic unmapped strings via raw Tauri `invoke()` without compile-time contract definitions and custom permission scopes.

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 Mobile Scoped IPC Capability Schema Boundary critical for AI coding assistants?

Enforces strict compile-time capabilities and granular permission scoping on all Tauri 2.0 mobile IPC bridges. Mitigates native privilege escalation via compromised webviews by isolating mobile window contexts, enforcing explicit command whitelists, and rejecting wildcard filesystem or shell permissions. 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 Permissions and Unscoped Native Invocation in Mobile Webview Bridges) 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