Skip to content

Harness: [Improvement]: Default instructions should request concise rationale/progress instead of thought process #8553

Description

@mo3in

Summary

The default Harness instructions in both .NET and Python currently ask the model to:

Explain your reasoning and thought process

and also ask it to keep the user informed about its "thought process" between tool calls.

For a provider-neutral agent framework, the default should request concise progress, rationale and results, not hidden/internal reasoning or chain-of-thought.

Why this matters

Framework defaults are inherited by applications unless they explicitly override HarnessInstructions.

The current wording can:

  • encourage models to expose private/internal reasoning;
  • behave inconsistently across providers that treat reasoning differently;
  • cause applications to override the whole Harness instruction block just to avoid this behavior;
  • conflate useful user-facing progress with hidden chain-of-thought.

We encountered this while integrating HarnessAgent into a production assistant and replaced the default Harness instructions even though the rest of the defaults were useful.

Suggested direction

For example:

Keep the user informed with concise progress updates when useful.
Explain decisions, actions, results, and important trade-offs at a high level.
Do not expose private chain-of-thought or hidden reasoning.

The exact wording can follow project conventions.

Scope

This appears in both:

  • .NET HarnessAgent.DefaultInstructions
  • Python DEFAULT_HARNESS_INSTRUCTIONS

No new abstraction is required.

Code Sample

Language/SDK

Both

Activity

  1. added
    .NETUsage: [Issues, PRs], Target: .Net
    pythonUsage: [Issues, PRs], Target: Python
    triageUsage: [Issues], Target: All issues that still need to be triaged
    on Sep 20, 2026
  2. changed the title [-]Harness: [Improvement]: Default instructions should request concise rationale/progress instead of thought process[/-] [+].NET: Harness: [Improvement]: Default instructions should request concise rationale/progress instead of thought process[/+] on Sep 20, 2026
  3. changed the title [-].NET: Harness: [Improvement]: Default instructions should request concise rationale/progress instead of thought process[/-] [+]Python: Harness: [Improvement]: Default instructions should request concise rationale/progress instead of thought process[/+] on Sep 20, 2026
  4. removed
    triageUsage: [Issues], Target: All issues that still need to be triaged
    on Sep 20, 2026
  5. changed the title [-]Python: Harness: [Improvement]: Default instructions should request concise rationale/progress instead of thought process[/-] [+]Harness: [Improvement]: Default instructions should request concise rationale/progress instead of thought process[/+] on Sep 20, 2026
  6. 1aifanatic commented on Oct 3, 2026

    @1aifanatic
    Contributor

    I will update the .NET and Python Harness defaults to request concise progress updates and high-level rationale, and align the data-processing sample instructions with that wording. This will keep the existing tool-use guidance and instruction override behavior.

  7. eavanvalkenburg commented on Oct 7, 2026

    @eavanvalkenburg
    Member

    We are marking this issue for vNext this would be a breaking change that would be hard for people to understand and see, and thus breaking it while there is a path to customize these instructions is not the right approach (#9004 was merged on accident, will revert). When we pick this up, it will involve running the different prompts against different models in order to get a good result across the board, but these instructions will never be a one size, fits all.

  8. 1aifanatic commented on Oct 21, 2026

    @1aifanatic
    Contributor

    Understood. I'll leave the default-prompt change for vNext and keep #9112 closed. The existing instruction override remains the current customization path; any future default change should follow the team's model-comparison evaluation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

.NETUsage: [Issues, PRs], Target: .NetagentsUsage: [Issues, PRs], Target: Single agentpythonUsage: [Issues, PRs], Target: PythonvnextUsage: [Issues, PRs], Target: breaking-change features deferred to the next major release

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions