Bí mật của bạn nằm trong keychain hệ điều hành,
Không nằm trong prompt và không nằm trong repo
AgentsRoom lưu khóa API, token và mật khẩu cơ sở dữ liệu trong một kho cục bộ trên máy, được mã hóa qua keychain của hệ điều hành. Bạn tham chiếu chúng theo tên, và ứng dụng phân giải khi một lệnh hay một agent khởi chạy.
Thôi dán token vào prompt chỉ vì đó là cách nhanh nhất để gỡ bí cho một agent. Đặt tên cho bí mật một lần, dùng {{secret:NAME}} ở mọi nơi khác, và để giá trị ở đúng chỗ của nó.
Cách AgentsRoom giữ một bí mật dùng được cho các lệnh của bạn nhưng không đọc được với chính agent đã yêu cầu nó.
Dự án nào rồi cũng có vài giá trị không được phép chia sẻ : một khóa thanh toán, một mật khẩu cơ sở dữ liệu, một token triển khai, một khóa API cho môi trường staging. Ngay khi các agent AI lập trình bước vào cuộc chơi, những giá trị đó bắt đầu di chuyển theo cách tệ nhất có thể. Chúng bị dán vào một prompt để gỡ bí cho agent, bị viết cứng vào một script do chính agent tạo ra, hoặc bị thả vào một tệp mà ba commit sau đó cuốn theo.
Trình quản lý bí mật của AgentsRoom cho chúng một chỗ duy nhất để nằm. Một bí mật là một cái tên và một giá trị : bạn thêm nó một lần, và AgentsRoom mã hóa nó qua keychain của hệ điều hành trước khi nó kịp chạm vào đĩa. Toàn bộ kho là một tệp duy nhất trong thư mục home của bạn, được ghi với quyền chỉ dành cho chủ sở hữu, và nó không bao giờ rời khỏi chiếc máy đã tạo ra nó.
Từ đó trở đi bạn không bao giờ phải động vào giá trị nữa. Bạn viết {{secret:NAME}} trong một lệnh dev hoặc trong môi trường của một agent, và AgentsRoom thay bằng giá trị thật khi lệnh đó hay agent đó khởi chạy. Các agent của bạn liệt kê được các tên và yêu cầu chèn một cái vào, thế là đủ để làm việc, còn bản thân giá trị thì chúng không bao giờ nhận được.
Một kho bí mật dựng cho cỗ máy đầy agent AI
Mã hóa bởi hệ điều hành, tham chiếu theo tên, phân giải vào thời điểm muộn nhất có thể.
Mã hóa bằng keychain hệ điều hành của bạn
Mọi giá trị đều được mã hóa qua Electron safeStorage, nghĩa là khóa mã hóa nằm ở keychain của hệ điều hành chứ không phải ở AgentsRoom. Ứng dụng lưu bản mã và nhờ hệ thống giải mã, đúng như những ứng dụng khác mà bạn vốn đã tin tưởng giao thông tin đăng nhập.
Một tệp kho duy nhất, chỉ chủ sở hữu đọc được
Toàn bộ bí mật của bạn nằm trong một kho duy nhất tại ~/.agentsroom/secrets.json, được ghi với quyền chỉ dành cho chủ sở hữu (0600) và thay thế nguyên tử ở mỗi lần thay đổi. Không có tệp ghi dở sau một cú treo máy, và không tài khoản người dùng nào khác trên máy mở được nó.
Tham chiếu theo tên, không bao giờ theo giá trị
Một bí mật đã lưu được dùng dưới dạng {{secret:NAME}} : trong dòng lệnh của một terminal dev, trong môi trường giao cho một agent, ở bất cứ đâu mà bình thường bạn sẽ gõ thẳng thông tin đăng nhập. Thứ bạn đọc trên màn hình, và thứ bạn có thể cho đồng nghiệp xem, là cái tên.
Phân giải lúc khởi chạy, trong tiến trình chính
Việc thay thế diễn ra khi tiến trình khởi động, bên trong tiến trình chính của Electron. Giá trị đã phân giải đi vào môi trường của lệnh đang được khởi chạy và không đi đâu khác : không vào log, không vào giao diện, không vào một tệp trên đĩa.
Agent thấy tên, không thấy giá trị
Một agent AI liệt kê được tên các bí mật của bạn và yêu cầu chèn một cái vào thứ nó sắp chạy. Không có nhánh code nào trả một giá trị về cho agent, về lớp giao diện hay qua MCP. Agent làm việc với tham chiếu, ứng dụng làm việc với bí mật.
Không keychain thì không lưu
Nếu máy không cung cấp được một keychain hệ điều hành hoạt động, AgentsRoom từ chối lưu bí mật thay vì lùi về ghi dạng văn bản thuần. Một kho âm thầm xuống cấp thành tệp thường còn tệ hơn là không có kho, nên lối lùi đó đơn giản là không tồn tại.
Cục bộ trên máy theo thiết kế, không phải theo một tùy chọn mặc định
Bí mật của bạn không bao giờ được gửi tới máy chủ AgentsRoom. Không có công tắc đồng bộ nào phải kiểm tra, không có kho đám mây nào phải từ chối, và không có bản sao lưu khóa của bạn ở đâu ngoài đĩa của chính bạn. Kho được tạo trên máy, mã hóa bằng một khóa mà keychain của hệ điều hành giữ cho riêng máy đó, và nó ở lại đó. Một bản sao của tệp, tự nó, không phải thứ mà một máy khác mở được.
Ranh giới giữa dùng một bí mật và đọc một bí mật được thực thi trong code, không phải bằng một câu dặn dò viết trong prompt. Lớp giao diện, các công cụ MCP và mọi agent đều nói về bí mật theo tên. Chỉ tiến trình chính của Electron biến một tham chiếu thành giá trị, và chỉ trong lúc nó dựng môi trường cho một tiến trình mà bạn đã yêu cầu khởi chạy. Dặn một agent cẩn thận với thông tin đăng nhập là một hy vọng. Không có hàm nào trả về thông tin đăng nhập mới là một bảo đảm.
Đó là điều khiến việc để một agent làm việc với một API trả phí hay một cơ sở dữ liệu thật trở nên hợp lý. Agent biết có một bí mật tên là STRIPE_SECRET_KEY và có thể yêu cầu chèn nó vào lệnh mà nó muốn chạy. Nó không in ra được, không sao chép vào tệp nó đang viết được, và không làm rò rỉ vào một cuộc trò chuyện lưu ở nơi khác được.
Từ một token dán vội đến một bí mật có tên
Ba bước, và giá trị không bao giờ xuất hiện lại.
Thêm bí mật một lần
Đặt cho nó một cái tên và dán giá trị lần cuối cùng. AgentsRoom mã hóa nó qua keychain của hệ điều hành rồi ghi vào kho tại ~/.agentsroom/secrets.json, chỉ chủ sở hữu đọc được và ghi nguyên tử. Nếu máy không có keychain dùng được, ứng dụng nói rõ điều đó và từ chối thay vì ghi ra văn bản thuần.
Tham chiếu nó bằng {{secret:NAME}}
Dùng tham chiếu ở đúng nơi giá trị vẫn thường đi vào : lệnh khởi động dev server của bạn, hoặc môi trường của một agent cần token API. Thứ được lưu trong cài đặt của bạn là tham chiếu, và nhìn vào nó thì hoàn toàn an toàn.
Để AgentsRoom phân giải lúc khởi chạy
Khi lệnh hay agent khởi chạy, tiến trình chính đổi tham chiếu lấy giá trị thật trong môi trường của tiến trình đó. Bộ công cụ của bạn nhận được thứ nó cần, còn agent đang điều khiển nó thì vẫn chỉ từng biết mỗi cái tên.
Khi trình quản lý bí mật thôi còn là tùy chọn
Những tình huống mà một thông tin đăng nhập dán vội biến thành sự cố thật.
Dev server cần khóa thật
Dev server của bạn không khởi động nổi nếu thiếu khóa thanh toán và mật khẩu cơ sở dữ liệu. Đặt {{secret:NAME}} vào lệnh khởi chạy thay cho thông tin đăng nhập, và lệnh đó trở thành thứ bạn có thể để nguyên trên màn hình trong một cuộc gọi mà không hoảng lên một giây nào.
Agent gọi một API trả phí
Một agent cần token để chạm tới một API bên thứ ba trong lúc làm việc. Thêm bí mật vào môi trường của nó theo tên : agent có một môi trường chạy được, còn token thì không nằm trong prompt, không nằm trong cuộc trò chuyện và không nằm trong bất cứ thứ gì agent viết ra sau đó.
Khóa thôi rơi vào repo
Tai nạn quen thuộc là một thông tin đăng nhập viết thẳng vào tệp cấu hình rồi bị một commit sau đó cuốn theo. Tham chiếu bí mật theo tên nghĩa là tệp được theo dõi trong repo chỉ chứa một cái tên, nên chẳng có gì để rò rỉ khi nhánh được đẩy lên.
Một máy, nhiều dự án
Một kho duy nhất, được keychain hệ điều hành bảo vệ và chỉ tài khoản người dùng của bạn đọc được, phục vụ mọi dự án bạn mở. Mỗi dự án tham chiếu những cái tên nó cần, và không dự án nào giữ bản sao rải rác riêng của một thông tin đăng nhập.
Làm sao một agent dùng được bí mật mà nó không đọc được?
Bởi vì dùng một thông tin đăng nhập và đọc một thông tin đăng nhập là hai thao tác khác nhau, và AgentsRoom chỉ cài đặt thao tác thứ nhất cho agent. Kho được mở ra qua MCP bằng đúng một công cụ, secrets_list, và nó trả về các tên. Từ đó agent viết {{secret:NAME}} vào lệnh hay môi trường mà nó cần, còn việc thay thế do ứng dụng thực hiện, không phải do agent.
Thứ cố ý vắng mặt là chiều ngược lại. Không công cụ MCP nào trả về giá trị của một bí mật, lớp giao diện không bao giờ nhận được giá trị nào, và không có gì hiển thị nó lại trong một cuộc trò chuyện. Việc biến một tham chiếu thành giá trị thật diễn ra bên trong tiến trình chính của Electron, đúng lúc một tiến trình được khởi chạy, và kết quả đi vào môi trường của tiến trình đó chứ không đi đâu khác.
Hệ quả thực tế là một agent chạy được bộ kiểm thử của bạn trên một cơ sở dữ liệu thật, gọi một API trả phí hay triển khai lên staging mà không một thông tin đăng nhập nào lọt vào ngữ cảnh của nó. Không có gì phải che đi sau đó, vì chưa từng có gì bị phơi ra.
Khám phá AgentsRoom MCPCâu hỏi thường gặp
Bí mật của tôi được lưu ở đâu?
Trong một tệp kho duy nhất tại ~/.agentsroom/secrets.json trong thư mục home của bạn. Mỗi giá trị được mã hóa qua Electron safeStorage, nên khóa mã hóa nằm ở keychain của hệ điều hành. Tệp được ghi với quyền chỉ dành cho chủ sở hữu (0600) và thay thế nguyên tử, nên một cú treo máy không bao giờ để lại nó ghi dở.
Agent AI của tôi có đọc được bí mật không?
Không. Một agent liệt kê được tên các bí mật của bạn và yêu cầu chèn một cái vào một lệnh hay một môi trường, đó là tất cả những gì nó cần để hoàn thành công việc. Không có nhánh code nào trả một giá trị về cho agent, về lớp giao diện hay qua MCP. Việc phân giải chỉ diễn ra trong tiến trình chính của Electron.
Bí mật của tôi có được đồng bộ lên máy chủ AgentsRoom không?
Không bao giờ. Kho là cục bộ trên máy theo thiết kế. Bí mật không được gửi tới máy chủ AgentsRoom, không được sao lưu lên đám mây và không được chuyển tiếp sang ứng dụng di động. Chúng được tạo trên máy của bạn, mã hóa cho máy của bạn, và ở lại đó.
Tôi dùng một bí mật trong một lệnh như thế nào?
Viết {{secret:NAME}} vào chỗ mà giá trị đáng lẽ nằm : trong một lệnh của terminal dev, hoặc trong môi trường của một agent. AgentsRoom thay bằng giá trị thật khi tiến trình đó được khởi chạy, còn thứ ở lại trong cài đặt của bạn là tham chiếu.
Chuyện gì xảy ra nếu máy của tôi không có keychain hệ điều hành?
AgentsRoom từ chối lưu bí mật. Cố ý không có lối lùi nào ghi giá trị dạng văn bản thuần ra đĩa, vì một kho âm thầm xuống cấp thành tệp thường cho bạn sự yên tâm của mã hóa mà không có mã hóa.
Cái này có thay thế các tệp môi trường trong dự án của tôi không?
Nó giải quyết đúng phần gây đau khi các agent AI vào cuộc : giữ thông tin đăng nhập ngoài các tệp, các prompt và các cuộc trò chuyện. Dự án của bạn vẫn giữ những gì nó cần lúc chạy, còn bản thân giá trị thì nằm trong kho và được chèn vào lúc khởi chạy, thay vì nằm trong một tệp mà agent đọc được và một commit cuốn theo được.
Nếu ai đó sao chép tệp kho, họ có đọc được nó không?
Trên một máy khác thì không. Các giá trị được mã hóa bằng một khóa do keychain hệ điều hành của bạn giữ, nên tệp lấy đi một mình chỉ là bản mã. Ngoài ra, kho được ghi với quyền chỉ dành cho chủ sở hữu, nên một tài khoản người dùng khác trên cùng máy cũng không mở được.
Các agent của tôi dùng công cụ MCP nào cho bí mật?
secrets_list, và đó là công cụ duy nhất. Nó trả về tên các bí mật được lưu trên máy này, nên một agent biết được có những gì rồi tham chiếu một cái bằng {{secret:NAME}} trong một lệnh dev hay trong môi trường của một tiến trình mà nó khởi động. Không công cụ nào trả về một giá trị, nên agent chẳng có gì để in ra, để sao chép vào tệp nó đang viết hay để làm rò rỉ vào một cuộc trò chuyện. Khi thiếu một bí mật mà nó cần, nó yêu cầu bạn thêm bí mật đó trong ứng dụng chứ không đòi bạn dán vào khung chat.
Có thể bạn cũng thích
Kết nối cơ sở dữ liệu
Lưu các kết nối MySQL và MariaDB của bạn, chạm tới một cơ sở dữ liệu trong mạng con riêng qua đường hầm SSH hoặc một phiên AWS SSM, và để các agent AI truy vấn nó qua MCP. Chỉ đọc theo mặc định, mỗi lần gọi một câu lệnh, tập kết quả có giới hạn, và mật khẩu không bao giờ tới tay agent.
Kết nối SSH
Lưu các kết nối SSH của bạn, mở terminal tích hợp qua SSH và chạy Claude Code, Codex hoặc Antigravity CLI trực tiếp trên máy chủ từ xa hay VPS của bạn. Xác thực bằng khóa SSH hoặc mật khẩu, hồ sơ kết nối theo từng dự án, không cần ứng dụng SSH riêng.
Dev Terminals
Trình quản lý terminal và khởi chạy tiến trình theo từng dự án. Khởi động backend, frontend và worker chỉ một cú nhấp, với các bí mật của bạn được chèn vào lúc khởi chạy thay vì gõ tay.
AgentsRoom MCP
Server MCP cho phép các agent của bạn lái chính AgentsRoom : dự án, terminal, backlog và kết nối, cùng những rào chắn đi kèm.
Cho agent của bạn quyền truy cập, đừng cho khóa
Tải AgentsRoom, chuyển khóa API và mật khẩu của bạn vào một kho được mã hóa bằng keychain hệ điều hành, và tham chiếu chúng theo tên ở mọi nơi khác.
Ứng dụng đồng hành: theo dõi agent khi đi đường
Sử dụng Claude, Codex, Antigravity CLI hoặc nhà cung cấp AI khác.
Gửi lỗi và yêu cầu thẳng vào backlog công khai của bạn.
Một cái nhìn về AgentsRoom đang hoạt động.