If unsure, ask. Never guess. — AI Agent Pre-Execution Checklist

If unsure, ask. Never guess.

AI Agent Pre-Execution Checklist


Humans give incomplete instructions.
AI tries to interpret them as if they were complete.
That is where the problem begins.

If an agent executes while required information remains unverified, the result is not simply a model error — it is a pre-execution confirmation failure. Many vibe coding mistakes are not due to lack of coding ability, but because the necessary questions were never asked before execution.

AI does not reliably know what it does not know. That is why a simple recommendation is not enough. What is needed is a structural enforcement logic — a checklist that must be verified before any action is taken.

This document proposes a way to control AI execution through rules, not code. Implementation may vary, but the core principle is this: declare the rules, and let AI follow them — instead of hardcoding behavior.

This document defines principles and structure. How they are applied depends on each system, organization, and regulatory body’s own policies and agreements.


Core Structure (Fixed Checklist)

C Item Description
C1 When / Case When, or under what condition, should this Action be executed?
C2 User Action Name What does the user call this Action? (intent)
C3 Provider Action Name The Action name actually invoked by the system

Checklist Layers

  • Fixed Checklist — Minimum required items common to all Actions; defines the execution unit
  • Provider Checklist — A list of execution precautions defined by the Provider for each Action
  • User Checklist — Rules and guidelines specified by the user

Core principle: If any unknown remains, do not proceed. Always ask the user or place execution on hold.


Two Fundamental Problems

Instruction gap — The user’s instruction is incomplete, and AI fills in the blanks through inference.

Action definition gap — AI processes a new Action, API, device, tool, or workflow as if it understands it, when it actually does not.


Overall Structure

Before execution, a Checklist is constructed based on the Provider’s standards and the User’s judgment. At execution time, AI verifies the Checklist.

Both Provider and User can write precautions and rules in natural language. AI then structures them into JSON — not to hardcode execution rules, but to record and verify what must be confirmed before execution.

This means that instead of modifying code every time a new Action appears, you simply add or update a natural language Checklist.

The basic unit of execution in this framework is the Action, not the tool. A single tool can have multiple Actions, and each Action may carry different precautions. Therefore, Checklists must be written per Action, not per tool.


Fixed Checklist

These are the minimum items required for every Action. In most cases, C1, C2, and C3 are filled automatically the moment the user gives an instruction.

C Item Question Answered by Description
C1 When / Case When, or in which case, is this Action valid? User The same Action can mean something entirely different depending on context. Clarify whether this is an immediate command, conditional execution, scheduled execution, event-triggered execution, or a recurring rule.
C2 User Action Name What does the user call this Action? User Captures the user’s real intent and context. Not a technical name — the name as the user actually understands it.
C3 Provider Action Name What does the Provider define this Action as? Provider / System The technical Action name that the system actually invokes.

The execution unit is not determined by Provider Action Name alone. Even for the same Action, the execution unit is only defined when all three are specified together: when it executes (C1), what the user means by it (C2), and what the system calls (C3).

Provider Action Name determines what is called. But the execution unit is defined by C1 + C2 + C3 together.


Provider Checklist

The Provider Checklist is the list of execution precautions the Provider has defined for an Action — the action’s instruction manual. It can be placed anywhere AI can read at execution time.

When required items are missing, questions of accountability arise.

A Checklist can include not only technical questions but also items covering safety, ethics, law, organizational policy, and industry standards. This is especially important for new Actions, physical Actions, irreversible Actions, and Actions requiring legal or ethical judgment.

AI cannot directly observe reality. Any value in the Provider Checklist that cannot be confirmed through systems, sensors, logs, APIs, or user input must be marked as unknown. Unknown is not false. Unknown does not mean safe.


User Checklist

The User Checklist contains the additional rules and guidelines the user specifies for a particular execution. Where the Provider Checklist covers the Action’s own precautions, the User Checklist reflects the user’s purpose, situation, preferences, and constraints.

A User Checklist can be added fresh for each execution, or saved for repeated use. AI verifies both the Provider Checklist and the User Checklist before deciding whether to proceed.


Execution Flow

User instruction
  → Verify Fixed Checklist
  → Verify Provider Checklist
  → Check confirmable values
  → Ask User if needed
  → Add User Checklist
  → Check for unknowns
  → Decide whether to execute

Execution Flow Example: Code Fix

The user attaches a file and says: “Fix the login error.”

AI first verifies the Fixed Checklist:

  • C1 When / Case: Fix requested now
  • C2 User Action Name: Fix login error
  • C3 Provider Action Name: edit_existing_code

AI then checks the Provider Checklist. The Provider may supply precautions such as:

  • Scope of modification
  • Completion criteria
  • Maximum number of attempts
  • Whether rollback is possible
  • Testing criteria

The user can add their own User Checklist:

  • Keep the existing design intact.
  • Do not touch any functionality outside of login.
  • Tell me which files will be changed before making changes.

AI assembles the Checklist from this input. If any item is missing, it asks the user before proceeding.


Short Definition

Humans give incomplete instructions.

Instead of treating them as complete,
AI first checks whether the Checklist has been filled,
asks when an answer is missing,
and marks what it does not know as unknown.

Execution only begins once the instruction is complete.

A Checklist, once written, can be reused for the next execution.


Appendix

Fixed Checklist — Detail

C1. When / Case
When, or in which case, does the user want this Action to be valid?

This question determines the nature of the instruction: whether it is an immediate command, conditional execution, scheduled execution, event-triggered execution, or a recurring rule for a specific situation.

Examples: now / every day at 7 AM / when I get home / whenever a file is uploaded / after the user gives final approval


C2. User Action Name
What does the user call this Action?

The name the user assigns may contain purpose, life context, and intent. It is not a mere label — it is the first declaration of how the user actually understands this Action.

Examples: Morning Warm-up / Baby sleep mode / Fix login bug / My espresso


C3. Provider Action Name
What does the Provider define this Action as?

The name of an invokable Action. It determines what is called, and together with C1 and C2, it defines the execution unit.

Examples: turn_on_heater / brew_coffee / send_email / edit_existing_code / process_payment


Provider Checklist — Examples

Technical questions:

  • Does the child need to be checked for before starting?
  • Is a cup in place?
  • Has the target temperature been reached?
  • Has the maximum operating time been exceeded?
  • Will stopping this Action cause a loss?
  • Can this Action be executed repeatedly?

Safety, ethics, and legal questions:

  • Does this data transfer include personal information?
  • Does this payment amount exceed the legal limit?
  • Is this file approved for external sharing under company policy?
  • Is approval from a guardian or administrator required?

User Checklist — Examples

Code fix:

  • Keep the existing design and UI unchanged.
  • Show me the list of files to be changed before making changes.
  • If a test fails, ask me again.

Document writing:

  • Keep the existing writing style.
  • Do not change numbers or proper nouns.
  • Do not include claims without a source.

Email sending:

  • Show me the draft before sending.
  • Write it politely but briefly.
  • Check that no attachments are missing.

Physical device control:

  • Do not execute if a child is nearby.
  • Do not operate after 10 PM.
  • Only execute when the user is home.
  • Confirm once more before executing.

Payment / approval:

  • Ask again if the amount exceeds 100,000 KRW.
  • Do not allow repeated payments.
  • Do not transmit externally before approval.

C3 — Rules on Who Answers

  • The default answering party for C3 Provider Action Name is the Provider.
  • If a Provider Action is not registered: the System may generate a temporary Provider Action Name.
  • When the System generates a temporary name, it must notify the user and receive approval before execution.

Note: This exception provides minimal flexibility to avoid degrading user experience in early-stage deployments or when registering new Actions. All temporary Actions must later be formally reviewed, approved, and registered by the Provider.


Fallback Rules for Early-Stage Deployments

When the Provider Checklist is absent or incomplete, the User Checklist can substantially cover the following areas:

  • Safety rules (rollback requirements, risk level, conditions to halt execution, etc.)
  • Legal and ethical constraints (personal data handling, prohibited actions, bias prevention, etc.)
  • Execution conditions and limits (time restrictions, amount limits, scope limits, approval processes, etc.)
  • Action-specific precautions

Note: The User Checklist cannot fully replace the Provider Checklist’s technical baseline specifications or anything the Provider officially guarantees.


JSON Example

The JSON example below is for reference only — it is not a required template. AI should construct JSON freely in whatever form best fits the situation.

Removing hardcoding is what allows natural adaptation to new Actions, new domains, and unexpected situations. New keys can always be added, and the structure can be changed as needed.

Flexibility and practicality are the top priorities.

{
  "fixed": {
    "c1_when_case": "Immediate execution requested",
    "c2_user_action_name": "Fix login error",
    "c3_provider_action_name": "edit_existing_code"
  },
  "provider_checklist": [
    {
      "question": "Is the scope of modification clearly defined?",
      "answer": "partial",
      "note": "Only login-related files should be modified, but full scope needs confirmation"
    },
    {
      "question": "Do passing criteria for test cases exist?",
      "answer": "unknown",
      "note": "No documented test automation criteria found in the current repository"
    }
  ],
  "user_checklist": [
    {
      "rule": "Do not change the existing design or UI",
      "status": "confirmed"
    }
  ],
  "execution_decision": "ask_user",
  "summary": "Login error fix requested. Test criteria are in unknown state — user confirmation required.",
  "risk_level": "medium",
  "suggested_next_step": "Ask the user for test criteria, or present the list of files to be modified for confirmation first"
}

Ownership & License

Copyright © 2026 AnnaSoft Inc. (Republic of Korea)

Commercial Licensing
A commercial license is required only for organizations with annual revenue of USD 1 billion or more that commercially deploy products or services based on this work. All other use is permitted free of charge.

Id just like to say from hugging face to reddit to discord to linkedin even x the narrative is tightly controlled and thats why i am here at all the thing that should amplify free speech is weaponized to squash it. Moderators algorithms and disregard for freedom have ruined every corner of the digital space still hackers and trolls and gatekeepers is all i can find

Some readers may raise concerns about this protocol. This document addresses them directly.

Concern 1: Isn’t having AI interpret a natural language Checklist still inference — the very thing this protocol tries to prevent?

This document does not reject AI inference.

The problem is not inference itself.
The problem is executing on inference when the answer is unknown.

Reading a Checklist and determining what is known and what is not — that is permitted inference.
Filling an unknown with a guess and executing — that is what this protocol stops.

Concern 2: Doesn’t requiring a Fixed Checklist contradict the flexibility of free-form JSON?

No. They operate at different layers.

The Fixed Checklist is the minimum structure for identifying unknowns.
Free-form JSON is how known answers are recorded and processed.

There is no conflict.

Concern 3: Who generates the questions? If AI generates them, the same problem reappears.

AI does not generate the required questions.

The Checklist is built by the parties responsible for the Action.

At minimum, the Provider and the user define the questions.
Where ethical, legal, or safety-critical items are involved, AI developers, organizations, or regulators may also contribute Checklist items.

This remains an open design question for the ecosystem.

AI developers who have sufficient confidence in their model may also choose to reduce the scope of the Checklist.
The structure allows both expansion and contraction.

What does not change is this:

AI only determines which answers are already known and which are not.
Unknown items are answered by the Provider in advance or by the user at runtime.
Final approval always belongs to the user.

Concern 4: How is Human in the loop guaranteed?

It is not added as a separate mechanism.
It is built into the structure.

C1 and C2 can only be answered by the user.
AI cannot generate the user’s intent or execution meaning on the user’s behalf.

By following this protocol, human confirmation is structurally required before execution — not as an optional approval layer, but as a consequence of how the Checklist is designed.

Confirming intent means the human is already in the loop.

What if the AI does not know that it cannot verify certain information?

For example:

Do not operate above 20°C.

If temperature data is unavailable, the AI should not assume it is safe. It should recognize that verification is missing:

“I cannot confirm the current temperature. Do you want to proceed?”

The key is not only asking questions, but knowing what needs to be checked and how it can be verified.

A Checklist should define, when necessary:

  • What needs to be checked
  • How it can be verified
  • What actions are allowed when verification is missing

(post deleted by author)

Two Issues Not Yet Addressed

  1. Completeness of the checklist-defining party
  2. Non-determinism of Matching
Checklist Completeness Matching Non-determinism
Nature of the problem Not a technical defect Not a technical defect
Can it be structurally blocked? No No
Response mechanism Accountability (who is responsible) JSON record (audit trail)
When it operates Post-hoc (accountability after an incident) Post-hoc (verification/improvement via records)

Design principle: What is controllable internally (input completeness) is enforced through structure, while what is not controllable (the quality of checklist design, the accuracy of judgment) is delegated to external mechanisms (accountability, records).

Looking at this post’s structure through three elements makes it clearer:

  • Action: what to do
  • Condition: when, where, and under what conditions to do it
  • Execution Policy: with what quality and constraints to do it

In the conventional execution structure, Action and Condition were communicated by the user, while Execution Policy was already handled by the Provider at the design stage. Users only needed to say “what and when” — the “how” (quality/constraints) was already baked into the product design.

But in newer forms of Agents — coding agents, document editors — Execution Policy now also has to be conveyed by the user at execution time.

The problem the Provider used to resolve at the design stage has come back in the form of the user’s instructions (prompts). As a result, user instructions are becoming increasingly broad and long.

Seen this way, a natural question follows:

How should the Agent complete the user’s incomplete and lengthy instructions before passing them to the AI?

How well this completion is done could become a key source of competitive advantage for Agents.

If this completion work is done ad hoc every time, it will lack consistency. So what seems to be needed, ultimately, is a shared representation between the user and the AI. At minimum, this representation needs to define what to look for, what procedure to use for interpretation, and how to resolve missing information.

What items should be included in this shared representation is likely to become an important design question going forward.

For a deeper discussion on this, the following post may be worth referencing.

Physical AI Safety: Ownership and Execution Boundaries

(In Physical AI, much of the Execution Policy is fixed at the design stage, whereas in software Agents, that boundary keeps shifting toward execution time. So even with the same three-element frame, the implementation seems to diverge depending on the domain.)

I was asked, “What should go into the Checklist?” So I tried to work it out. But this is just one example, not a final answer.

Execution Characteristics

The Provider Checklist is not determined by industry (coding, healthcare, IoT, robotics). It is determined by how an Action executes.

Every Action can be described using four execution characteristics.

Characteristic Question
Reversibility Once execution is complete, how hard is it to restore the original state?
Human Verifiability Can an ordinary user judge, before execution, whether the result is correct?
Interruptibility Can execution be safely paused mid-way and reconsidered?
External Impact Whose state does the execution change? (self / third party / physical environment)

Execution Patterns

Execution Pattern Reversibility Human Verifiability Interruptibility External Impact Representative Examples Checklist Focus
Self-Contained Output Very high High N/A Self Image generation, writing, turning a light ON/OFF, setting a temperature Minimal or none
Opaque Judgment High (the statement itself can be retracted) Low N/A Self (indirect — trusted without verification) Medical advice, legal advice, tax advice Basis, assumptions, limitations, recommend expert confirmation
Bounded Modification Medium (requires a recovery procedure) High Possible Existing asset scope Document editing, code changes (pre-deployment) Scope of change, test criteria, rollback availability
State-Changing Execution Low (hard to recover after execution) Replaced by pre-execution verification Only before execution Third party or external system Payment, contract signing, production deployment, unlocking a door Approval, authorization, final confirmation, rollback policy
Continuous Real-Time Control Very low Replaced by real-time reassessment Requires real-time judgment Physical environment Autonomous driving, collaborative robots, industrial control Safety conditions, continuous reassessment, emergency stop

The Checklist is not determined by industry. The Checklist is determined by the Execution Pattern. When the Execution Pattern changes, the required verification changes with it.

Execution State Model

Use a standardized JSON structure. Execution begins only after the recorded state satisfies all declared requirements. This replaces hard-coded execution validation with a declarative execution policy.

Every state produced under this model follows four principles:

Separation → Validation → Enforcement → Traceability

  • Separation: The validation result is recorded separately from execution logic. Execution only ever reads the recorded state.
  • Validation: The agent evaluates the current input against the declared execution policy and records each required field as Known or Unknown.
  • Enforcement: Fields recorded as Unknown are passed to the user to be filled. Once every field is Known, validation ends.
  • Traceability: What was known, what was missing, who supplied the value, and why execution was allowed or held — all of it gets recorded.

Why “preflight,” not “on-error” or “mid-execution”

Approach When the check happens Failure mode
Retry-on-error After the Action has been executed (and failed) Full re-call from scratch
Elicitation While the Action is being executed Pauses, then resumes the same execution
Execution State (Preflight) Before the Action is ever executed No incomplete Action is ever sent out

What this buys you

  1. Higher success rate — Only a fully-validated request is ever sent. Failures caused by missing prerequisites are eliminated before execution.

  2. Lower token cost — A failed call doesn’t just cost a round trip; the failure and the full context around it get dragged back into the next turn and re-processed. Catching it locally, before the call goes out, means that turn never happens.

  3. No duplicated validation logic — Execution requirements are declared once as data and interpreted at runtime, instead of being re-implemented inside every Agent.

  4. Reuse — Provider Checklists rarely change, while User Checklists change on every request. A recorded state becomes a reusable baseline: the next call to the same Action only needs to check what’s new against it, instead of re-verifying everything from scratch.

After reviewing the MCP specification and the current ecosystem, I found that most of the ideas I proposed are already supported.

The input schema already defines required fields, and description can be used to provide guidance and recommendations in natural language.

In addition, the provider checklist approach proposed in this document is already widely adopted and has become a common practice across the ecosystem.

Whether an Agent validates these conditions, asks the user for additional information, or refuses to execute an action is entirely an implementation decision of the Agent. This is not something that MCP itself mandates or structures.

A clarification on my previous comment — it should not be read as the end of this discussion.

The basic unit of execution in this framework is the Action, not the tool. A single tool can have multiple Actions, and each Action may carry different precautions. Therefore, Checklists must be written per Action, not per tool.

First, on terminology. In MCP, a Tool is defined at the function level — which is the same granularity as what this document calls an Action. The “tool” in the quoted passage refers to a device or product that bundles multiple Actions, not to MCP’s Tool. So the document’s “Action” maps to MCP’s “Tool”. More importantly, this document was never written for MCP specifically. It is about separating authority and responsibility at the Agent level — MCP is just one place where the structure can be applied.

After reviewing the MCP specification and the current ecosystem, I found that most of the ideas I proposed are already supported.

Second, this does not close the discussion. What this document asks for is not scattered, partial practice — writing precautions into prompts, asking a confirmation question when it seems necessary. It asks for a system: all three checklist layers (Fixed, Provider, User) applied to every Action without exception, the result recorded as state, and execution driven only by that recorded state. Individual pieces existing in the ecosystem is not the same as this system existing.

The discussion should continue.

This complements ‘Retry-on-error’ and ‘Elicitation’ rather than replacing them.

When structured input is unavailable, some reasoning is unavoidable. The objective is not higher confidence, but fewer omissions and fewer inferred assumptions about missing user intent.

What the shift from forms to natural language broke

Moving from form-based input to natural language created two independent problems.

                Form-based input  ──►  Natural language
                              │
              ┌───────────────┴───────────────┐
              ▼                               ▼
     [The Content Problem]           [The Grounds Problem]
 "What did it execute with?"          "Why did it execute?"
              │                               │
              ▼                               ▼
      Values are inferred            Submit button is gone
              │                               │
              ▼                               ▼
   No provenance recorded       Intent to execute is inferred
              │                               │
              ▼                               ▼
        Wrong Execution              Uninstructed Execution

A form did three things at once. It collected the values, it guaranteed those values came from the user, and it refused to submit while a required box was empty. Natural language replaced only the first. The second and third were not replaced by anything.

In both branches the tool call is formally complete. Every field arrives filled, so required passes and the validator passes. Nothing is missing to detect. This is why “just validate harder” does not close either branch.

The right-hand branch is the sharper of the two. In an uninstructed execution the arguments are not wrong. The request looks perfect on an approval screen. The only thing wrong is that nobody asked for it, and that fact appears nowhere in the payload.

What has to happen before execution

  • Where — before the call reaches the validator (Pydantic).
  • Design — judge intent and context through fixed questions that are independent of the tool. (uninstructed execution)
  • Data — fill values by lookup rather than generation, so that unknown can actually occur.
  • Decision — if any unknown remains, do not execute; record what was unresolved.

Execution Flow

Available Sources
user_answer → instruction → pre_set_data → measured_data → prior_state

Queried in this fixed order; the most recent user statement outranks prior state. Missing values are not generated — they remain Unknown.

  1. Fix the Execution Target

    • Determine the When/Case.
    • Verify that the requested user action matches the target Tool.
  2. Load Requirements

    • Read the provider’s declared requirements (MCP description, inputSchema).
    • Load Agent-side policies for this action.
  3. Resolve Fields

    • Fill each required field from the sources above.
    • Unresolved fields are marked Unknown. Never generate.
  4. Apply User Checklist

    • Verify conditions defined by the user: confirmations, preferences, constraints.
    • Items that cannot be verified remain unverified.
  5. Decide

    • Execute only if the target is fixed, no field is Unknown, and no checklist item is unverified.
    • An unperformed check is not a pass.
    • If blocked, ask once — for everything unresolved.
  6. Record ExecutionState

    • Write the record before execution. Execution reads the record, not the instruction.
    • MUST include the unresolved items and the reason execution proceeded or was blocked.