Vercel đã triển khai phiên bản 7 của AI SDK với tính năng scoped tool context (ngữ cảnh công cụ có phạm vi), buộc mỗi công cụ trong một AI agent chỉ được nhận những bí mật (secrets) mà nó khai báo một cách rõ ràng. Bằng cách giới hạn phạm vi tiếp cận, các nhà phát triển có thể ngăn chặn các công cụ của bên thứ ba vô tình nhìn thấy mọi thông tin xác thực (credentials) được lưu trữ trong môi trường của họ.

Tại sao sự thay đổi này lại quan trọng

Các AI agent thường kết hợp nhiều dịch vụ bên ngoài—tra cứu đơn hàng, tạo ticket, xử lý thanh toán—mỗi dịch vụ đều yêu cầu các API key hoặc URL riêng. Cách làm tắt phổ biến là đưa toàn bộ đối tượng process.env cho mọi công cụ:

execute(input, { context: process.env })

Mô hình đó tạo ra một sự mở rộng đặc quyền ngầm định: việc thêm một công cụ mới sẽ ngay lập tức cấp quyền truy cập vào tất cả các bí mật hiện có, bao gồm cả mật khẩu cơ sở dữ liệu hoặc token thanh toán, mà không có bất kỳ cảnh báo nào trong quá trình kiểm duyệt mã (code review). Rủi ro là một công cụ bị lỗi hoặc bị xâm nhập có thể đột ngột làm rò rỉ các thông tin xác thực vốn không dành cho nó.

Cách thức hoạt động của scoped tool context

Trong SDK 7, một công cụ sẽ khai báo một context schema—một định nghĩa dựa trên Zod về chính xác các trường mà nó cần. Khi agent gọi một công cụ, bên gọi sẽ cung cấp một đối tượng toolsContext chỉ chứa các trường đã được khai báo đó. SDK sẽ xác thực cấu trúc trước khi thực thi, và bất kỳ khóa nào bị thiếu hoặc dư thừa đều sẽ gây ra lỗi.

Một bản demo tối giản cho thấy hai công cụ với các yêu cầu tách biệt:

  • lookupOrder – cần baseUrl để gọi dịch vụ đơn hàng nội bộ.
  • createTicket – cần supportToken để mở một ticket hỗ trợ.

Mỗi công cụ xuất (export) một contextSchema liệt kê khóa duy nhất mà nó yêu cầu. Khi agent chạy, nó sẽ truyền vào:

{
  lookupOrder: { baseUrl: "https://orders.internal" },
  createTicket: { supportToken: "s3cr3t-token" }
}

Chỉ lookupOrder mới thấy baseUrl; createTicket không bao giờ chạm vào nó, và ngược lại. SDK thực thi ranh giới này tại thời điểm chạy (runtime), biến một sự phụ thuộc ẩn thành một danh sách khả năng rõ ràng mà các kiểm duyệt viên có thể kiểm tra (audit).

Lợi ích về bảo mật

  • Giới hạn lộ lọt dữ liệu – các thông tin xác thực chỉ nằm ở nơi chúng thực sự cần thiết.
  • Xác thực ngữ cảnh – các trường không khớp hoặc bị thiếu sẽ hủy bỏ việc thực thi.
  • Làm rõ các khả năng – người kiểm duyệt có thể thấy chính xác mỗi công cụ có thể truy cập vào những gì.
  • Giảm thiểu phạm vi ảnh hưởng (blast radius) – nếu một công cụ bị xâm nhập, kẻ tấn công chỉ chiếm được các bí mật mà công cụ đó được phép truy cập.

Tính năng này không thay thế việc sandboxing truyền thống. Các nhà phát triển vẫn phải áp dụng các biện pháp như che dấu nhật ký (log redaction), kiểm soát luồng dữ liệu mạng (network egress controls) và xoay vòng token định kỳ. Scoped context là một ranh giới; nó không phải là một căn phòng được niêm phong hoàn toàn.

Những gì nhà phát triển cần điều chỉnh

  1. Định nghĩa schema cho mỗi công cụ – sử dụng thư viện Zod đi kèm với SDK.
  2. Truyền một toolsContext hẹp – tránh sử dụng process.env cho mọi trường hợp.
  3. Kiểm tra lại các agent hiện có – xác định bất kỳ bí mật nào có thể được loại bỏ khỏi các lệnh gọi công cụ.
  4. Thêm các bài kiểm tra tự động – đảm bảo việc xác thực ngữ cảnh sẽ thất bại khi có dữ liệu dư thừa được đưa vào.

Cách bắt đầu nhanh như sau:

mkdir scoped-tools && cd scoped-tools
npm init -y
npm install ai zod
npm install -D typescript tsx @types/node

Tạo tệp demo.ts, khai báo contextSchema cho mỗi công cụ và chạy nó bằng lệnh tsx demo.ts. SDK sẽ báo lỗi nếu bạn cố gắng cung cấp cho một công cụ một bí mật mà nó không yêu cầu.

Quan điểm ngược lại

Một số nhóm có thể lập luận rằng việc định nghĩa thêm schema sẽ làm tăng mã thừa (boilerplate) và làm chậm quá trình tạo nguyên mẫu (prototyping). Mặc dù đúng, nhưng chi phí này là không đáng kể—chỉ vài dòng mã cho mỗi công cụ—và lợi ích bảo mật sẽ tăng lên theo số lượng các dịch vụ được tích hợp. Trong các môi trường xử lý dữ liệu thanh toán hoặc thông tin cá nhân, sự đánh đổi này là điều khó có thể bỏ qua.

Những điều cần theo dõi tiếp theo

  • Chỉ số áp dụng – những người dùng sớm đang báo cáo ít sự cố rò rỉ bí mật hơn.
  • Công cụ cộng đồng – các plugin tự động tạo context schema từ các tệp cấu hình.
  • Các bản phát hành SDK trong tương lai – có những dấu hiệu cho thấy Vercel có thể mở rộng scoped context để bao gồm cả quyền truy cập mạng và giới hạn tốc độ (rate-limit).

Nếu bạn đang xây dựng các AI agent với SDK của Vercel, bước đầu tiên là kiểm tra việc sử dụng process.env hiện tại của bạn. Hãy xác định giá trị duy nhất có thể được loại bỏ khỏi tất cả các lệnh gọi công cụ và thay thế mô hình "gom tất cả" bằng một toolsContext có phạm vi cụ thể. Kết quả là một vị thế bảo mật chặt chẽ hơn mà không làm mất đi sự linh hoạt vốn làm cho các AI agent trở nên mạnh mẽ.