> ## Documentation Index
> Fetch the complete documentation index at: https://learn.actionist.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Oversight & approvals

> Delegate the work, keep the wheel. Agents pause for approval before anything risky, ask when only you can decide, and flag the blockers only you can clear, so nothing irreversible happens without your say-so.

<div className="mxp-hero xc-border">
  <div className="exp-eyebrow mxp-rise">STAY IN CONTROL</div>

  <h2 className="mxp-hero-title mxp-rise" style={{animationDelay:'0.06s'}}>
    Automation you <span style={{background:'linear-gradient(90deg,#24A4FF,#9000FF,#E3008E)',WebkitBackgroundClip:'text',backgroundClip:'text',color:'transparent'}}>never lose control of.</span>
  </h2>

  <p className="mxp-hero-dek mxp-rise" style={{animationDelay:'0.13s'}}>
    An Actionist agent does the work, but you hold the wheel. It pauses for your approval before anything risky, asks when a decision is genuinely yours to make, and flags the blockers only you can clear. Delegate the outcome. Keep the final say.
  </p>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">The control loop</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Three moments an agent brings you in.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Most of the time an agent just works. When it shouldn't proceed alone, it does one of three things, each tuned so you're interrupted only when it matters.
    </p>
  </div>

  <Columns cols={3}>
    <Card title="Approve" icon="shield-check">
      Before a risky or irreversible action (sending an email, charging a card, deleting a record), the agent pauses and waits for your go-ahead. You set how cautious it is, per agent.
    </Card>

    <Card title="Ask" icon="circle-help">
      When a choice is genuinely yours to make, the agent asks a short multiple-choice question mid-run and continues the moment you answer.
    </Card>

    <Card title="Flag" icon="wrench">
      When something only you can fix stands in the way, like an expired connection or a missing key, the agent records a blocker and surfaces it under <strong>Needs attention</strong> with exactly what to do.
    </Card>
  </Columns>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">See it happen</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">A scheduled run that hits a wall, and tells you exactly how to clear it.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      An agent running on its own can't invent a credential it doesn't have. Instead of failing silently, it files a blocker with a plain-language fix and stops, ready to pick the work back up once you act.
    </p>
  </div>

  <div className="xc-border" style={{borderRadius:'16px'}}>
    <div className="mxp-window" style={{position:'relative',zIndex:2}}>
      <div className="mxp-window-bar"><span className="mxp-window-dot" /><span className="mxp-window-dot" /><span className="mxp-window-dot" /><span className="mxp-window-title">actionist · scheduled run · ops</span></div>

      <div className="mxp-window-body" style={{minHeight:'220px'}}>
        <div className="mxp-s1" style={{margin:'2px 0 8px'}}><span className="mxp-stream-event">schedule fired · weekdays 09:00 · agent: Ops</span></div>
        <div className="mxp-stream-line mxp-s2"><span className="mxp-stream-time">ops</span><span className="mxp-stream-text">Pulling yesterday's closed Linear tickets…</span></div>
        <div className="mxp-stream-line mxp-s3"><span className="mxp-stream-time">ops</span><span className="mxp-stream-text">Linear returned <em>401 Unauthorized</em>. The connection looks expired.</span></div>
        <div className="mxp-s4" style={{margin:'8px 0'}}><span className="mxp-stream-event">blocker raised · broken\_connection · run stopped</span></div>
        <div className="mxp-stream-line mxp-s5"><span className="mxp-stream-time">ops</span><span className="mxp-stream-text"><strong>What to do:</strong> Reconnect your Linear account in the Apps screen, then I'll resume on the next run.<span className="mxp-caret" /></span></div>
      </div>
    </div>
  </div>

  <p className="text-sm text-gray-500 dark:text-gray-400 mt-3" style={{maxWidth:'48rem'}}>
    That same blocker now appears on your Home tab under <strong>Needs attention</strong>, with a one-click <strong>Fix</strong> button that takes you straight to the screen where you resolve it.
  </p>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Approve</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Decide how much rope each agent gets.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Every agent has an <strong>approval mode</strong> that controls when it pauses to ask you before using a tool. Set it once in the agent's <strong>Tools</strong> tab. Skills and MCP tools respect it globally, and you can override individual tools below the setting. The four modes run from most hands-on to most autonomous.
    </p>
  </div>

  <Tabs>
    <Tab title="Suggest" icon="lightbulb">
      **Propose tool calls; you run them manually.** The agent plans and recommends each action but never executes on its own, so you stay fully hands-on. Best while you're learning to trust a new agent.
    </Tab>

    <Tab title="Ask each time" icon="hand">
      **Require approval before every tool execution.** The agent does the thinking and queues each action for a yes/no. Maximum oversight with the agent still doing the heavy lifting.
    </Tab>

    <Tab title="Guarded auto" icon="shield-check">
      **Run safe tools automatically, ask for risky ones.** Reads, searches, and drafts flow without interruption; writes and destructive actions pause for approval. The everyday default for most agents.
    </Tab>

    <Tab title="Full auto" icon="zap">
      **Run every tool without prompting.** The agent acts end to end with no pauses. Reserve it for well-tested, low-risk routines you've already watched run.
    </Tab>
  </Tabs>

  <Warning>
    `Full auto` removes every confirmation, including destructive actions. Use it only for agents and routines you've already verified by hand. For anything touching money, customers, or production data, prefer <strong>Guarded auto</strong> or <strong>Ask each time</strong>.
  </Warning>

  <div className="mt-8">
    <Steps>
      <Step title="Open the agent's Tools tab" icon="sliders-horizontal">
        In Agent Studio, select the agent and open the **Tools** tab. Find **Approval mode** near the top. Its subtitle explains that it controls when the agent pauses before using a tool.
      </Step>

      <Step title="Pick a mode" icon="list-checks">
        Choose **Suggest**, **Ask each time**, **Guarded auto**, or **Full auto**. The setting applies to all of the agent's tools, including Skills and MCP servers.
      </Step>

      <Step title="Override individual tools (optional)" icon="wrench">
        Need one tool stricter or looser than the rest? Set a per-tool override in the tool list below the global picker.
      </Step>
    </Steps>
  </div>

  {/* TODO(image): approval-mode-setting — IMAGE SPEC: Agent Studio, Tools tab, top of the panel. Show the "Approval mode" label with subtitle "Controls when the agent pauses to ask you before using a tool. Skills and MCP tools respect this globally; per-tool overrides live below." Below it a segmented picker with four options (Suggest / Ask each time / Guarded auto / Full auto) with "Guarded auto" selected (purple). Beneath, the start of a per-tool override list with 2-3 tool rows each showing a small mode dropdown. Replace this CSS mock with the real screenshot. */}

  <div className="xc-border" style={{borderRadius:'14px',padding:'4px'}}>
    <div className="mxp-window">
      <div className="mxp-window-body" style={{minHeight:'auto',padding:'18px 20px'}}>
        <div style={{fontWeight:600}}>Approval mode</div>
        <div style={{fontSize:'12.5px',opacity:0.6,marginTop:'2px',maxWidth:'34rem'}}>Controls when the agent pauses to ask you before using a tool. Skills and MCP tools respect this globally; per-tool overrides live below.</div>

        <div style={{display:'flex',flexWrap:'wrap',gap:'6px',marginTop:'12px'}}>
          <span style={{fontSize:'12.5px',border:'1px solid rgba(120,120,140,0.25)',borderRadius:'8px',padding:'5px 12px',opacity:0.7}}>Suggest</span>
          <span style={{fontSize:'12.5px',border:'1px solid rgba(120,120,140,0.25)',borderRadius:'8px',padding:'5px 12px',opacity:0.7}}>Ask each time</span>
          <span style={{fontSize:'12.5px',fontWeight:600,color:'#fff',background:'linear-gradient(90deg,#6C37FF,#9000FF)',border:'1px solid rgba(144,0,255,0.5)',borderRadius:'8px',padding:'5px 12px'}}>Guarded auto</span>
          <span style={{fontSize:'12.5px',border:'1px solid rgba(120,120,140,0.25)',borderRadius:'8px',padding:'5px 12px',opacity:0.7}}>Full auto</span>
        </div>
      </div>
    </div>
  </div>

  <div className="mt-8">
    <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50 mb-2">What an approval looks like</h3>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl mb-5">
      When an action needs your sign-off, a request card appears with a plain summary of what's about to happen and a preview of the change. Each request is graded by how risky it is, and the most dangerous ones make you type to confirm.
    </p>

    <Columns cols={3}>
      <Card title="Safe write" icon="pencil">
        A low-risk change, like a draft or a non-destructive update. Quick to approve at a glance.
      </Card>

      <Card title="Sensitive write" icon="triangle-alert">
        Touches something that matters, like sending a message or changing a record others rely on. Read before you approve.
      </Card>

      <Card title="Destructive" icon="trash-2">
        Deletes or overwrites. The card requires you to <strong>type to confirm</strong> before it will run. No accidental clicks.
      </Card>
    </Columns>

    <Note>
      Secrets are never shown in an approval card. Fields like tokens, passwords, API keys, and raw commands are masked, so you can review what an action does without exposing the credentials it uses.
    </Note>

    {/* TODO(image): approval-modal — IMAGE SPEC: The approval request modal for a DESTRUCTIVE action. Title is a human label of the action; a red "Destructive" sensitivity chip top-right. Body shows a summary line and a structured preview (e.g. a "Delete" kind listing the target record name). A masked field row reads "[Field masked]" where a token would be. A type-to-confirm input is shown (GitHub-style) with the confirm button disabled until the text matches. A small "2 more pending" badge sits near the action buttons. Replace this CSS mock with the real screenshot. */}

    <div className="xc-border" style={{borderRadius:'14px',padding:'4px'}}>
      <div className="mxp-window">
        <div className="mxp-window-body" style={{minHeight:'auto',padding:'18px 20px'}}>
          <div style={{display:'flex',alignItems:'center',justifyContent:'space-between',gap:'10px'}}>
            <div style={{fontWeight:600}}>Delete customer record</div>
            <span style={{fontSize:'11px',fontWeight:700,color:'#fff',background:'rgba(229,57,53,0.92)',borderRadius:'999px',padding:'3px 10px'}}>Destructive</span>
          </div>

          <div style={{fontSize:'13.5px',opacity:0.75,marginTop:'8px'}}>Permanently delete <strong>Acme Corp (cus\_8fK…)</strong> and all associated invoices.</div>
          <div style={{display:'flex',justifyContent:'space-between',fontSize:'12.5px',marginTop:'10px',padding:'8px 10px',borderRadius:'8px',background:'rgba(120,120,140,0.1)'}}><span style={{opacity:0.6}}>api\_key</span><span style={{opacity:0.5,fontStyle:'italic'}}>\[Field masked]</span></div>
          <div style={{fontSize:'12px',opacity:0.6,marginTop:'12px'}}>Type <strong>DELETE</strong> to confirm</div>
          <div style={{marginTop:'6px',border:'1px solid rgba(120,120,140,0.3)',borderRadius:'8px',padding:'7px 10px',fontSize:'12.5px',opacity:0.45,fontFamily:"ui-monospace,monospace"}}>DELETE</div>

          <div style={{display:'flex',alignItems:'center',gap:'8px',marginTop:'14px'}}>
            <span style={{fontSize:'13px',fontWeight:600,color:'#fff',background:'rgba(229,57,53,0.92)',borderRadius:'8px',padding:'6px 16px'}}>Approve</span>
            <span style={{fontSize:'13px',opacity:0.6,padding:'6px 12px'}}>Cancel</span>
            <span style={{marginLeft:'auto',fontSize:'11.5px',opacity:0.55}}>2 more pending</span>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Ask</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">When the call is yours, the agent asks, then keeps moving.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Some decisions aren't risky, they're just yours: which of two leads to prioritise, whether to use the formal or casual tone, which account to post from. Rather than guess or stall, the agent asks a short, structured question and continues the instant you answer.
    </p>
  </div>

  <Columns cols={2}>
    <Card title="Multiple choice, not an essay" icon="list-checks">
      Each question offers two to four clear options. Pick with a click or a number key. If free text might help, the agent includes an "Other" option. Some questions let you select more than one.
    </Card>

    <Card title="Asked at the right moment" icon="clock">
      The agent only asks to clear genuine ambiguity, confirm a specific choice, or pick between concrete options, not for open-ended chit-chat. A short status line tells you what it's waiting on.
    </Card>
  </Columns>

  <Info>
    On an unattended run (a schedule or a trigger firing while you're away), there's no one to answer in the moment. Actionist tells the agent honestly that no user is available, so it makes a reasonable call or finishes and flags the decision, rather than hanging forever. For decisions that must be yours, route them through an **approval mode** or a [workflow](/Folders/workflows) gate instead.
  </Info>

  {/* TODO(image): ask-user-card — IMAGE SPEC: The in-chat "ask user" card mid-run. Top: a pulsing status dot with text like "Choosing which leads to prioritise". A small purple header chip ("Priority"). A bold question ("Which segment should I prioritise tonight?"). Below, 3 option buttons each with a numbered box (1-3) and a short description line; option 2 is highlighted/selected. A multi-step counter "1 / 2" sits top-right. Replace this CSS mock with the real screenshot. */}

  <div className="xc-border" style={{borderRadius:'14px',padding:'4px'}}>
    <div className="mxp-window">
      <div className="mxp-window-body" style={{minHeight:'auto',padding:'18px 20px'}}>
        <div style={{display:'flex',alignItems:'center',justifyContent:'space-between',gap:'10px'}}>
          <div style={{display:'flex',alignItems:'center',gap:'8px',fontSize:'12px',opacity:0.7}}><span style={{width:'7px',height:'7px',borderRadius:'999px',background:'#9000FF',display:'inline-block'}} />Choosing which leads to prioritise</div>
          <span style={{fontSize:'11.5px',opacity:0.5}}>1 / 2</span>
        </div>

        <span style={{display:'inline-block',fontSize:'10.5px',fontWeight:700,color:'#fff',background:'linear-gradient(90deg,#6C37FF,#9000FF)',borderRadius:'999px',padding:'2px 9px',marginTop:'12px'}}>PRIORITY</span>
        <div style={{fontWeight:600,marginTop:'8px'}}>Which segment should I prioritise tonight?</div>

        <div style={{display:'flex',flexDirection:'column',gap:'7px',marginTop:'12px'}}>
          <div style={{display:'flex',alignItems:'center',gap:'10px',border:'1px solid rgba(120,120,140,0.25)',borderRadius:'9px',padding:'9px 11px',fontSize:'13px'}}><span style={{width:'18px',height:'18px',borderRadius:'5px',border:'1px solid rgba(120,120,140,0.4)',display:'inline-flex',alignItems:'center',justifyContent:'center',fontSize:'11px',opacity:0.7}}>1</span>Enterprise (> 500 seats)</div>
          <div style={{display:'flex',alignItems:'center',gap:'10px',border:'1px solid rgba(144,0,255,0.55)',background:'rgba(144,0,255,0.08)',borderRadius:'9px',padding:'9px 11px',fontSize:'13px'}}><span style={{width:'18px',height:'18px',borderRadius:'5px',color:'#fff',background:'linear-gradient(90deg,#6C37FF,#9000FF)',display:'inline-flex',alignItems:'center',justifyContent:'center',fontSize:'11px',fontWeight:700}}>2</span>Mid-market, high intent</div>
          <div style={{display:'flex',alignItems:'center',gap:'10px',border:'1px solid rgba(120,120,140,0.25)',borderRadius:'9px',padding:'9px 11px',fontSize:'13px'}}><span style={{width:'18px',height:'18px',borderRadius:'5px',border:'1px solid rgba(120,120,140,0.4)',display:'inline-flex',alignItems:'center',justifyContent:'center',fontSize:'11px',opacity:0.7}}>3</span>Other (let me type)</div>
        </div>
      </div>
    </div>
  </div>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Flag</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Blockers, surfaced under Needs attention.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      When an agent running on its own hits something only you can fix, it doesn't just fail. It records a <strong>blocker</strong>: what's stuck, why, and exactly what you need to do. Every open blocker shows up under <strong>Needs attention</strong> on your Home tab.
    </p>
  </div>

  <p className="text-base text-gray-700 dark:text-gray-300 max-w-3xl mb-4">
    Each blocker is filed under one of six categories, so you can tell at a glance what kind of fix it needs:
  </p>

  <Columns cols={3}>
    <Card title="Missing credential" icon="key-round">
      A required credential or API key isn't there yet. Add it in [Credentials](/Folders/credentials).
    </Card>

    <Card title="Broken connection" icon="unplug">
      A connection is expired, revoked, or failing auth (for example, a 401). Reconnect the app.
    </Card>

    <Card title="Needs decision" icon="git-branch">
      A choice or approval only you can make. Open the agent and decide.
    </Card>

    <Card title="Missing config" icon="settings">
      Required setup or configuration is missing. Finish the setup on the app or agent.
    </Card>

    <Card title="Permission denied" icon="lock">
      The agent lacks the permission or scope to act. Grant access on the connected app.
    </Card>

    <Card title="Other" icon="circle-alert">
      A user-actionable block that fits none of the above. The agent spells out the fix.
    </Card>
  </Columns>

  <div className="mt-8">
    <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50 mb-2">Anatomy of a Needs attention card</h3>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl mb-5">
      The section header counts how many agents need you, for example <em>"2 agents need attention"</em>. Each row gives you everything to act in one place:
    </p>

    <div className="xc-border" style={{borderRadius:'14px',padding:'4px'}}>
      <div className="mxp-window">
        <div className="mxp-window-body" style={{minHeight:'auto',padding:'18px 20px'}}>
          <div style={{display:'flex',alignItems:'flex-start',gap:'12px'}}>
            <Icon icon="wrench" size={20} color="#F59E0B" />

            <div style={{flex:1}}>
              <div style={{fontWeight:600,color:'inherit'}}>Ops can't read Linear: the connection looks expired.</div>
              <div style={{marginTop:'6px',fontSize:'14px'}}><span style={{color:'#F59E0B',fontWeight:600}}>What to do:</span> Reconnect your Linear account in the Apps screen.</div>
              <div style={{marginTop:'6px',fontSize:'12px',opacity:0.6}}>Seen 3 times</div>

              <div style={{marginTop:'12px',display:'flex',gap:'8px'}}>
                <span style={{fontSize:'13px',fontWeight:600,border:'1px solid rgba(144,0,255,0.4)',borderRadius:'8px',padding:'4px 14px'}}>Fix</span>
                <span style={{fontSize:'13px',opacity:0.6,padding:'4px 10px'}}>✕ Dismiss</span>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div className="mt-6">
      <ParamField path="What to do" type="the fix">
        The exact action that clears the blocker, in plain language, written by the agent rather than a generic error.
      </ParamField>

      <ParamField path="Fix" type="button">
        Takes you straight to the screen where you resolve it: the right app connection, or the agent itself. Actionist only ever links to a real in-app destination.
      </ParamField>

      <ParamField path="Dismiss" type="button">
        Clears the card if you've handled it another way. Removes it immediately.
      </ParamField>

      <ParamField path="Seen N times" type="count">
        How often this same blocker has recurred. Repeats are de-duplicated into one row so the list stays clean.
      </ParamField>
    </div>

    {/* TODO(image): needs-attention — IMAGE SPEC: The "Needs attention" section on the Home tab. An amber-accented header with a wrench icon reading "2 agents need attention". Two blocker rows: row 1 a broken_connection ("Ops can't read Linear: connection expired", "What to do: Reconnect your Linear account in the Apps screen", "Seen 3 times", Fix + Dismiss buttons); row 2 a missing_credential for a different agent ("What to do: Add your Stripe API key in Credentials"). Fix is a secondary button, Dismiss a ghost button with an X. The mock above stands in until the real screenshot is produced. */}
  </div>

  <div className="mt-8">
    <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50 mb-2">How blockers clear</h3>

    <Columns cols={2}>
      <Card title="Cleared automatically" icon="circle-check">
        Blockers tied to an [agent](/Folders/agents) or a [trigger](/Folders/reactions) clear on their own the next time that agent or trigger runs successfully. Once you've fixed the cause, the card disappears.
      </Card>

      <Card title="Cleared by you" icon="hand">
        Blockers rooted in a shared connection or app stay until you dismiss them or reconnect, because they affect every automation that depends on that connection.
      </Card>
    </Columns>
  </div>

  <Note>
    Blockers are raised on unattended runs: [schedules](/Folders/schedules) and [triggers](/Folders/reactions). In a live chat you're already there, so the agent just asks you directly instead of filing a blocker.
  </Note>

  <div className="mt-6">
    <Callout icon="sparkles" color="#9000FF">
      <strong>Coming soon: Tasks for You.</strong> Needs attention shows blockers today, the things that stop a run. We're extending it into a full inbox for <em>non-blocking</em> items too ("review this draft before I send", "have a look when you can", FYIs), so everything an agent wants from you lives in one place, sorted by urgency.
    </Callout>
  </div>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Wherever you are</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Get flagged in the app, or in your chat.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      You don't have to be staring at the dashboard. When an agent connected to a [channel](/Folders/channels) gets blocked, the same card (what's stuck, why, and what to do) is delivered to your Telegram or Slack, with a link back to the exact fix screen.
    </p>
  </div>

  <Columns cols={2}>
    <Card title="Delivered to Telegram & Slack" icon="send">
      A blocked run posts its <strong>What to do</strong> card to the agent's connected channel, so a problem reaches you even when the app is closed and your laptop is shut.
    </Card>

    <Card title="One link back to the fix" icon="link">
      Each card carries a link straight to the screen where you resolve it. No hunting through menus to find which agent needs you.
    </Card>
  </Columns>

  <div className="mt-6">
    <Callout icon="sparkles" color="#9000FF">
      <strong>Coming soon: approve from the chat.</strong> Today the channel card notifies you and links back to the app. Next, you'll be able to <em>approve, reject, or answer</em> right from Telegram or Slack with a single tap, clearing a blocker or signing off on an action without opening Actionist at all.
    </Callout>
  </div>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">On the roadmap</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Where oversight is heading.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The control loop today is approve, ask, and flag. Three additions, in build, make it tighter still.
    </p>
  </div>

  <Columns cols={3}>
    <Card title="Tasks for You inbox" icon="inbox">
      <Badge color="purple" size="sm">Coming soon</Badge>
      <div style={{marginTop:'10px'}}>One queue for everything an agent needs from you (blockers, approvals, reviews, and FYIs), ranked by urgency, not just the things that stop a run.</div>
    </Card>

    <Card title="One-tap remote approval" icon="thumbs-up">
      <Badge color="purple" size="sm">Coming soon</Badge>
      <div style={{marginTop:'10px'}}>Approve, reject, or answer a question directly from Telegram or Slack. Sign off on the move without opening the app.</div>
    </Card>

    <Card title="Auto-resume" icon="play">
      <Badge color="purple" size="sm">Coming soon</Badge>
      <div style={{marginTop:'10px'}}>Clear a blocker and the agent picks the task back up where it stopped, with no waiting for the next scheduled run to start over.</div>
    </Card>
  </Columns>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Good to know</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Questions about staying in control.</h2>
  </div>

  <AccordionGroup>
    <Accordion title="Can an agent do something destructive without asking me?" icon="shield-check">
      Only if you've set it to. Under **Suggest**, **Ask each time**, or **Guarded auto**, destructive and sensitive actions pause for your approval, and the most dangerous ones make you type to confirm. The only mode that skips confirmation entirely is **Full auto**, which you opt into per agent for routines you've already verified.
    </Accordion>

    <Accordion title="What happens to a scheduled run that gets blocked?" icon="calendar-clock">
      The run stops and files a blocker instead of failing silently. It appears under **Needs attention** (and in your channel, if connected) with the exact fix. Once you resolve the cause, an agent-scoped or trigger-scoped blocker clears on the next successful run; a shared-connection blocker clears when you reconnect or dismiss it.
    </Accordion>

    <Accordion title="Can an agent ask me a question while I'm asleep?" icon="moon">
      On an unattended run there's no one to answer in the moment, so Actionist tells the agent honestly that no user is available. The agent then makes a reasonable call, or finishes and flags the decision, so it won't hang. For decisions that must be yours, gate them with an approval mode or a workflow step so they wait for you rather than being decided automatically.
    </Accordion>

    <Accordion title="Do approval settings cover MCP servers and skills too?" icon="plug">
      Yes. The approval mode applies to all of an agent's tools globally, including [Skills](/Folders/skills) and [MCP](/Folders/mcp) tools. If you need one specific tool to be stricter or looser, set a per-tool override in the agent's Tools tab.
    </Accordion>

    <Accordion title="Will I see the same blocker again and again?" icon="copy">
      No. Repeats of the same blocker are de-duplicated into a single card with a **Seen N times** count, so a recurring problem nudges you without flooding the list.
    </Accordion>
  </AccordionGroup>
</div>

<div className="w-full py-10">
  <div className="actionist-cta-panel xc-border">
    <div className="relative z-10 flex flex-col items-center gap-5 max-w-2xl mx-auto" style={{textAlign:'center'}}>
      <span className="actionist-eyebrow">Delegate with confidence</span>

      <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-white leading-tight">
        Hand off the work. Keep the final say.
      </h2>

      <p className="text-base md:text-lg text-white/85">
        Set an approval mode, let your agents run, and step in only when it counts.
      </p>

      <div className="flex flex-wrap items-center justify-center gap-3 pt-2">
        <a className="actionist-cta-btn-primary" href="https://app.actionist.ai" target="_blank" rel="noreferrer">
          Open the Dashboard

          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
            <path d="M5 12h14" />

            <path d="m12 5 7 7-7 7" />
          </svg>
        </a>

        <a className="actionist-cta-btn-secondary" href="/Folders/agents">
          Configure an agent
        </a>
      </div>
    </div>
  </div>
</div>
