Skip to content

Security, privacy and data flow ​

Security and permissions in Halo — what leaves your computer, how keys are stored, what the AI, IM guests and colleagues may do, and Remote Access risks.

Halo runs on your own computer. Conversations, files, memory and keys are stored locally, and Halo has no cloud service that keeps them. What leaves the computer is mainly the conversation content sent to the model provider you chose, plus the connections you turn on yourself. When you use Halo yourself, the AI runs tools without asking each time; for IM guests and colleagues on other computers, Halo applies the limits you set.

This page covers the public build of Halo 3.0.4. A Halo provided by your company may have different settings for credential encryption, browser access, tunnels and more. Your screen is the authority.

What stays local and what leaves the computer ​

The table lists every party Halo connects to on its own. All other data stays on your computer.

Connects toWhenWhat is sentHow you control it
The model providers you configure (Claude, ChatGPT, GitHub Copilot, a custom API and so on)Every conversation and every Digital Human runThe conversation context: your messages, attachment contents, files and tool results the AI readsChoose the provider in Settings › AI Model, see Models and accounts. How the content is handled follows that provider's policy
Sign-in services (each provider's OAuth sign-in)When you sign in and when a token refreshesThe authorization data needed to sign inSign out of accounts you no longer use in Settings › AI Model
Store sources (the Digital Human Protocol official source, MCP Official Registry, Smithery, Claude Skills Registry, SkillHub)When you open the Store; every 6 hours to check installed items for updatesCatalog queries; package downloads when you installTurn off sources you don't need in Settings › App Store
The update feed (the project's releases page on GitHub)5 s after launch, every 60 minutes, and after the computer wakesA version check; the installer download when a new version existsSee Update Halo
Usage statistics (Google Analytics, Baidu Tongji)While Halo runsUsage events such as launch, which page was opened, a message was sent, a Digital Human ran; together with a random install ID created on this computer, plus the version, operating system and similar details. Message events only record that a message was sent, not its textThe public build has no switch in Settings to turn this off
The tunnel and Halo's address serviceOnly after you start the tunnel in Settings › Remote Access › Internet AccessAll traffic between remote clients and this Halo, relayed through a Cloudflare tunnel; on the first start, a request to Halo's address service for this device's permanent addressStop Tunnel. See Remote Access
Federation GatewayOnly after you fill in Federation GatewayTraffic of teams across networks; the gateway only relays itLeave it empty to keep teams on the local network. The public build has no built-in gateway, see Federation Gateway
IM platforms (WeCom, Feishu, WeChat)When a bot is connectedMessages the bot receives and sends, and files it sendsDisconnect or delete the bot in Settings › Message Channels
Web searchWhen the AI searches the webThe search terms, sent to Bing (English) or Baidu (Chinese) by default; Google only when asked forThis is a built-in capability and always available
Websites the AI Browser visitsWhile Web Control is on (on by default in new conversations, then your last choice carries over)Normal web traffic, carrying your sign-ins in the Halo browserTurn off Web Control in the composer under + › Capabilities, see AI Browser
MCP servers and mailboxes you add yourselfWhen they are calledDepends on that server or mail serviceManage them in the Capability library or Settings › Message Channels

A few more points:

  • Crash reports stay on this computer. Halo does not upload them. If support asks, open Settings › System › Crash Reports › Open Folder and send them yourself.
  • Proxy: Settings › System › Proxy applies to Halo's own traffic: model requests, the Store, and the AI and MCP processes Halo starts. Update checks and downloads always use the system proxy. The AI Browser uses the system proxy unless you turn on Also apply to AI Browser. See Gateway and proxy.
  • With Remote Access on, this computer accepts connections. Halo listens on all network interfaces (default port 3456), and any device on the same local network can connect with the access password.

Where data lives ​

Halo keeps its data in two folders:

FolderWhat it holds
~/.halo (Windows: %USERPROFILE%\.halo)config.json (settings and credentials), halo.db, workspaces, knowledge bases, team work records and more
The app data folder (macOS: ~/Library/Application Support/halo)The AI Browser's cookies and sign-ins, the AI engine's config directory, crash reports

For the full paths on each OS, log locations and the HALO_DATA_DIR environment variable, see Config and data paths.

Keys and credentials ​

  • The public build stores credentials in plain text. API keys, sign-in tokens, the Remote Access password and similar secrets are written in plain text to ~/.halo/config.json; MCP server environment variables and headers, and values entered in a Digital Human's configuration, are also stored in plain text in Halo's data folder. Anyone or any program that can read these files can read them.
  • Secrets in Settings only show as ***. Model service API keys and sign-in tokens, message channel secrets and the Remote Access password are masked in the desktop app, the Remote Access web page, the Android app and API responses. Exception: MCP server environment variables and headers, values entered in a Digital Human's configuration and a Store source's API key are shown and returned as stored, so remote clients and the HTTP API holding the access password can read them. Content the AI reads through Operate Halo has all of these masked.
  • Encryption at rest is a build option, and the public build doesn't enable it. A company build can turn it on, and then credentials are stored encrypted. Older release notes that mention "credentials encrypted locally" do not apply to the public 3.0.4 build.
  • The Claude Code CLI sign-in doesn't store its token in Halo. With the Claude Code CLI sign-in, the CLI stores and refreshes its own credential, and Halo keeps no token.

So protect the data folder as you would a keychain:

  • Don't put ~/.halo in a cloud-sync folder, a shared folder or a public backup.
  • Don't send config.json to anyone. For troubleshooting, use Settings › System › System Diagnostics › Export Report instead: the report contains no secrets itself and masks Bearer tokens, JWTs and some sk- keys in error messages, but not formats such as Anthropic keys (sk-ant-…) or OpenAI project keys (sk-proj-…), so read it before you send it; see Logs and diagnostics.
  • Protect the computer with a sign-in password and don't share your OS account.
  • Choosing Claude CLI Default under Settings › Advanced › Claude CLI Integration › Config Directory shares ~/.claude with a standalone Claude CLI and is marked High Risk. Unless you need it, keep Halo Default.

The AI runs tools without asking each time ​

When you use Halo yourself, the AI runs commands, edits and deletes files, and calls tools without asking for your approval first.

At the top of Settings › System, the Permissions card shows the badge Full Permission Mode and a Trust Mode switch ("Automatically execute all operations") that is always on and cannot be turned off. Halo 3.0.4 has no "ask me before each call" mode.

The only thing that makes the AI stop and wait for you is the question card it shows in a conversation: it continues after you answer. Unattended contexts, such as IM chats and scheduled runs, cannot use that card.

These are the limits that do apply:

LimitEffect
The folder behind a workspaceThe AI works mainly inside the workspace. Point workspaces only at folders you're comfortable letting the AI change
Composer + › CapabilitiesSwitches such as Web Control, AI Terminal and Operate Halo decide whether the AI has those tools. The AI cannot turn a switch on itself, see Capabilities
Settings › Advanced › Built-in MCP ExtensionsTurning off a group of built-in tools removes them from the AI
Requests not made by youIM guests and colleagues on other computers are bound by permission settings, see IM guests and Other computers

Operate Halo is off by default. When it is on, the AI can change every workspace, Digital Human and team in this Halo through Halo's own API, not only the current workspace, and deletions have no confirmation dialog; only actions that cannot be undone come with an instruction for the AI to confirm with you in plain language first. Even with it on, the AI cannot add model sources, change general settings such as permissions or appearance, or touch Remote Access. A few routes do accept secrets (an existing WeChat bot's token, a Store source's API key; the route that edits a model source would also take an API key, but Halo tells the AI not to send one). A key typed into a conversation stays in the conversation history and is sent to your model provider, so enter keys in Settings yourself. See Operate Halo safety.

What the logs contain ​

LogContentsNote
Normal log (main.log)Runtime information and errors. Secrets are masked before writingRotates at 10 MB, keeps 5 archives
Remote Access audit log (auth-audit.log)Remote sign-in successes, failures and lockoutsNever contains the password
http-raw.log (only while Developer Mode is on)Full headers and bodies of the HTTP requests Halo sends, including API keys and conversation content, with nothing maskedTurn Developer Mode off as soon as you're done, and delete this file

Developer Mode is under Settings › Advanced and is off by default. Its hint reads "Generates large log files and may affect performance. Disable after troubleshooting." Open the log folder from Settings › System › Log Files › Open Folder.

Don't send http-raw.log as is

This file contains your API keys and full conversations. When someone needs diagnostic information, give them the masked report from System Diagnostics › Export Report.

What IM guests can do ​

Once a Digital Human is connected to a WeCom or Feishu bot, the people who message the bot fall into two groups:

RoleHow Halo decidesWhat they can do
OwnerPeople in the Owner User IDs listThe same as you on this computer, with no limits
GuestEveryone elseOnly the tools you open to guests

Key points:

  • Permission Control is in Settings › Message Channels › (bot card) › Permissions. When it is off, the card reads "Everyone has full access": every sender counts as an owner.
  • For WeCom and Feishu bots created with Scan to add a bot, Permission Control is turned on automatically. While the owner list is empty, the first person to message the bot directly becomes its owner. Group chats never claim an owner, and an ownerless bot does nothing in a group. So after scanning, send the bot a direct message yourself first.
  • In the public build, bots added by hand start with Permission Control off. If anyone else will message the bot, turn it on.
  • With Guest Access off, "Guests can only chat and use memory": guests still get replies, they just can't use tools.
  • When you turn on Guest Access for the first time, only Read files, Find files and Search contents are open, limited to this workspace. Web pages, writing files, running commands and the rest must be opened one by one.
  • Guests never get Operate Halo, and cannot make the Digital Human push IM messages to other people. When a group's messages from owners and guests are handled together, they run with the guest's permissions.
  • Personal WeChat bots have no Permission Control: everyone who messages one has owner access. Use it only where you alone will message it, see Personal WeChat.

INFO

A Halo provided by your company may turn Permission Control on by default or preset the tools guests may use.

For what each switch does, how to find your own user ID and example setups, see Owner and guest permissions.

Requests from other computers ​

In a team across computers, a colleague's Digital Human, or the colleague in person, can ask your Digital Humans for work. Those requests run on your computer, limited by what you set for each member:

  • When you invite, join or add a member, Halo asks "What the people you invite can have your digital humans do", with the answers Read only, Read and write files and Everything it can normally do. In 3.0.4 the default is Read only.
  • You can fine-tune it later in the member's What others can ask it to do setting, which uses the same switches as IM guests.
  • A request from another computer can always use memory, and its file access is limited to this workspace. Only with everything on can it reach files outside the workspace the way you do.
  • Operate Halo is never lent to a colleague.
  • A member added earlier and never set up separately shows "Not set separately yet: people on other computers can use everything it can do." If you see this, choose a scope for it.
  • Your own use, and your own Digital Humans working together, are never limited by these settings.

With a Federation Gateway, the gateway only relays traffic and does not store team content. Halo does not add its own encryption at the gateway layer, though, so a gateway admin who turns on the diagnostic room.trace setting gets members' message text in the logs. Use only a gateway you trust and deploy it behind HTTPS / WSS; see what the gateway sees.

Risks of Remote Access ​

Once Settings › Remote Access is on, anyone who has the access password has full control of this Halo. The Security Warning in the UI reads: "After enabling remote access, anyone with the password can fully control your computer (read/write files, execute commands)."

FactDetail
PasswordAuto-generated, 12 characters, or your own, 8–64 characters with upper- and lowercase letters and a digit. It never expires. Changing it signs out every connected client
Per-IP lockout5 failures within 5 minutes lock that IP for 15 minutes
Global lockout10 failures within 60 minutes across all IPs lock out every client, you included, for 30 minutes
Lockout alertA desktop system notification. Restarting Halo resets the counters
Local networkUses http://, unencrypted. On a public network, use the tunnel's HTTPS address instead
Internet AccessRelayed through a Cloudflare tunnel and Halo's address service — not a peer-to-peer connection. The QR code holds only the address, not the password

Turn Remote Access off, or stop the tunnel, when you don't need it. If you suspect the password has leaked, change it at once, and use Change address to replace the public address if needed. See Remote Access safety.

AI Browser sign-ins ​

  • Every browser page in Halo shares one set of cookies and sign-ins: your tabs, pages the AI opens and Digital Humans' pages alike. Sign in once, and the AI and your Digital Humans can use that site as you.
  • Sign in only to sites where you're comfortable letting the AI act for you.
  • Settings › System › Browser data › Clear browser data signs every site out, including sites your Digital Humans use, and cannot be undone. Halo's own data is kept.
  • The public build doesn't restrict which sites the AI Browser can open. An allowlist that limits access exists only in company builds; where such a build allows it, Browser Allowed Sites appears under Settings › System.

For more, see AI Browser.

Limits on sending files over IM ​

In an IM chat, the AI can send reports, images and PDFs back to the chat, but only files inside the Digital Human's workspace or the system temp folder.

  • Shortcuts (symbolic links) are resolved to their real location before the check.
  • Folders closed to a restricted conversation (a guest's, for example) cannot be sent from either.
  • The same rule applies to files attached when a Digital Human pushes an IM message on its own.
  • The guest tool settings also have a separate File Send switch that decides whether guests can have the AI send files.

So don't keep sensitive files in the workspace of a Digital Human behind a public-facing bot.

Halo Server's default token ​

If HALO_REMOTE_PASSWORD is not set, Halo Server uses the default token halo123. Anyone can guess it, and at 7 characters it is too short to sign in from the browser or the Android app. Always set a strong password of 8 or more characters before deploying, see Server configuration.

Checklist for admins ​

  • [ ] Workspaces point only at folders you're comfortable letting the AI change.
  • [ ] ~/.halo is not in a cloud-sync folder, a shared folder or a public backup.
  • [ ] Developer Mode is off, and old http-raw.log files are deleted.
  • [ ] Every public-facing WeCom and Feishu bot has Permission Control on, you are the owner, and guests have only the tools they need.
  • [ ] No personal WeChat bot is used where several people will message it.
  • [ ] In teams across computers, every member has What others can ask it to do set, and none shows "Not set separately yet".
  • [ ] Operate Halo is off when not needed; new conversations carry over your last choice.
  • [ ] Remote Access uses a strong password and is off when not needed; the tunnel is stopped when not in use.
  • [ ] The AI Browser is signed in only to the sites it needs.
  • [ ] Halo Server has its own HALO_REMOTE_PASSWORD.

Next steps ​

基于 MIT 协议开源 · Open source under the MIT license