Laravel AI SDK v0.10: 4 New Features Explained
Laravel AI Livewire #Laravel AI SDK #AI Agents #Filesystem Tools #Human Approval #Livewire

Laravel AI SDK v0.10: 4 New Features Explained

3 min read Mohamed Said Mohamed Said

Laravel AI SDK v0.10: What's New

Laravel AI SDK v0.10 was released in August 2026, with several features announced at Laracon US 2026 in Boston. This article walks through the first of four new features covered in the full tutorial: filesystem tools for AI agents combined with human tool approval.


Feature 1: Filesystem Tools + Human Tool Approval

The SDK now ships with built-in file storage tools and a human tool approval mechanism. Together, they let an AI agent read, write, copy, and delete files on a Laravel filesystem disk — while requiring a human to confirm any destructive or mutating action before it executes.

Isolated Workspace Disks

Each workspace gets its own isolated Storage disk so the agent cannot escape its sandbox:

public function disk(): FilesystemAdapter
{
    File::ensureDirectoryExists($this->rootPath());

    return Storage::build([
        'driver' => 'local',
        'root'   => $this->rootPath(),
        'throw'  => true,
    ]);
}

Giving the Agent Its Tools

FileStorage::readOnly($disk) provides safe listing and reading tools. Custom tools for writing, copying, and deleting are merged in separately:

public function tools(): iterable
{
    $disk = $this->workspace->disk();

    return FileStorage::readOnly($disk)->merge([
        new WorkspaceWriteFile($disk),
        new WorkspaceCopyFile($disk),
        new WorkspaceDeleteFile($disk),
    ]);
}

Requiring Approval Before Mutations

Each mutable tool implements Approvable and uses the InteractsWithApprovals trait. The needsApproval() method returns an Approval::required() message shown to the user in the chat UI:

protected function needsApproval(Request $request): Approval
{
    $path = (string) $request->string('path');

    return Approval::required(
        $this->fileExists($this->disk(), $path)
            ? "This overwrites the existing file [{$path}]."
            : "This creates the new file [{$path}]."
    );
}

The delete tool uses the same pattern with a clear warning that the action cannot be undone.

Handling Approvals in a Livewire Component

The chat is a Livewire component. When the agent hits an approvable tool, it pauses and surfaces pendingApprovals on the response. The user can approve, reject, or edit the arguments before the action runs. The component then calls ->continue() with a Decisions object:

$response = $this->agent()
    ->continue($this->conversationId, as: $this->workspace)
    ->prompt(Decisions::from($decisions));

Decisions map each approval ID to Decision::approve(), Decision::reject(), or Decision::edit($editedArguments).


Key Takeaways

  • Built-in filesystem tools let agents read, list, write, copy, and delete files on any Laravel disk.
  • FileStorage::readOnly() gives safe read-only access; mutable tools are opt-in.
  • Approvable + InteractsWithApprovals pause agent execution and surface a confirmation message to the user.
  • Users can approve, reject, or edit tool arguments before a sensitive action executes.
  • Isolated disks per workspace prevent agents from accessing files outside their sandbox.
  • The approval flow integrates cleanly with Livewire via pendingApprovals on the AgentResponse.

The full tutorial (Premium) covers three additional new features in Laravel AI SDK v0.10. Read the original article at https://laraveldaily.com/post/laravel-ai-sdk-v010-4-new-features.

Found this useful?

Frequently Asked Questions

3 questions
Q01 What does FileStorage::readOnly() provide in Laravel AI SDK v0.10?
It gives an AI agent a set of safe, non-mutating tools for listing and reading files on a given Laravel filesystem disk, without exposing write, copy, or delete capabilities.
Q02 How does human tool approval work in Laravel AI SDK v0.10?
A tool implements the Approvable contract and uses the InteractsWithApprovals trait. Its needsApproval() method returns an Approval::required() message. The agent pauses before executing the tool and waits for the user to approve, reject, or edit the arguments via the chat UI.
Q03 How do you continue an agent conversation after resolving approvals in Livewire?
Call ->continue($conversationId, as: $participant)->prompt(Decisions::from($decisions)) on the agent, passing a Decisions object that maps each pending approval ID to Decision::approve(), Decision::reject(), or Decision::edit($editedArguments).

Continue reading

More Articles

View all