Synced from monorepo

Synced from monorepo

Changes:
- Workspace task snapshots only list incomplete backgrounded tasks
- Quiet auth, LSP, and config warnings in the shell
- Fix observability attributes for warm store errors, restore setup, remote tools, and preview denials
- Fail closed when soak metrics are missing
- Run plan-mode exit last in mixed tool batches
- Allow /loop to store prompts that can terminate the loop
- Make subagent maximum nesting depth configurable
- Security: apply sandbox profile to the leader process that executes tools

Source-Revision: 1adcd1f477870e4a97bacbd6be78c8a3bfbac46d
This commit is contained in:
grokkybara[bot] 2026-07-27 17:54:34 +00:00
commit 02d9359435
96 changed files with 2346 additions and 351 deletions

View file

@ -30,8 +30,9 @@ use std::env;
use std::net::SocketAddr;
use tokio_util::sync::CancellationToken;
use xai_grok_pager::app::{
AgentCmd, Command, HeadlessArgs, LeaderMgmtArgs, LeaderMgmtCommand, LeaderTargetArgs,
PagerArgs, join_early_prefetch, resolve_use_leader,
AgentCmd, Command, HeadlessArgs, LeaderMgmtArgs, LeaderMgmtCommand, LeaderMode,
LeaderTargetArgs, PagerArgs, join_early_prefetch, resolve_leader_mode, resolve_use_leader,
warn_leader_disabled_by_sandbox,
};
use xai_grok_pager::app::{WorkspaceMgmtArgs, WorkspaceMgmtCommand, WorkspaceStartArgs};
use xai_grok_pager::client_identity::PAGER_CLIENT_VERSION;
@ -416,6 +417,20 @@ fn fetch_remote_settings() -> Option<xai_grok_shell::util::config::RemoteSetting
join_early_prefetch(xai_grok_shell::agent::models::start_early_prefetch(None))
}
async fn run_workspace_mgmt(args: WorkspaceMgmtArgs) -> Result<()> {
if matches!(
&args.command,
WorkspaceMgmtCommand::Start(_)
| WorkspaceMgmtCommand::Restart(_)
| WorkspaceMgmtCommand::Resume { .. }
) && let Some(profile) = xai_grok_sandbox::requested_confinement_profile()
{
anyhow::bail!(
"`grok workspace` start/restart/resume is unavailable under sandbox profile '{profile}': \
those commands (re)activate shared-leader workspace exposure that this session cannot \
prove is confined by that profile. Disable the profile at the source that selected it \
(CLI, env, config, or a managed requirement)."
);
}
let env_override = workspace_command_env_override();
let remote_settings = if env_override.is_none() {
fetch_remote_settings()
@ -526,6 +541,7 @@ async fn workspace_start(
&raw_config,
remote_settings.as_ref(),
true,
xai_grok_sandbox::requested_confinement_profile(),
);
if !use_leader {
anyhow::bail!(
@ -1122,14 +1138,29 @@ async fn run_agent_command(
&agent_args.mode,
None | Some(AgentCmd::Stdio) | Some(AgentCmd::Headless(_))
);
let (use_leader, policy_disable_reason) = resolve_use_leader(
let requested_confinement = xai_grok_sandbox::requested_confinement_profile();
let LeaderMode {
use_leader,
policy_disable_reason,
disabled_by_confinement,
} = resolve_leader_mode(
agent_args.leader,
agent_args.no_leader,
&raw_config,
remote_settings.as_ref(),
leader_eligible,
requested_confinement,
);
tracing::info!(use_leader, ?policy_disable_reason, "leader mode resolved");
tracing::info!(
use_leader,
?policy_disable_reason,
sandbox_profile = ?requested_confinement,
leader_disabled_by_sandbox = disabled_by_confinement.is_some(),
"leader mode resolved"
);
if let Some(profile) = disabled_by_confinement {
warn_leader_disabled_by_sandbox(profile);
}
let managed_install = is_managed_install(
std::env::current_exe().ok(),
&xai_grok_shell::util::grok_home::grok_home(),