Skip to content

make sure we don't overwrite any other settings when updating strategy - #8

Merged
Soph merged 2 commits into
mainfrom
soph/preserve-local-settings
Jan 7, 2026
Merged

Soph merged 2 commits into
mainfrom
soph/preserve-local-settings

Conversation

@Soph

@Soph Soph commented Jan 6, 2026

Copy link
Copy Markdown
Collaborator

When running entire enable again it would rewrite the settings file potentially overwriting other settings not used/set during enable.

@Soph
Soph force-pushed the soph/preserve-local-settings branch from 25bdf38 to 5957258 Compare January 6, 2026 13:59
@Soph
Soph changed the base branch from soph/improve-enable to main January 6, 2026 14:46
@Soph
Soph requested a review from dipree January 6, 2026 14:46
@Soph
Soph merged commit 61459a0 into main Jan 7, 2026
3 checks passed
@Soph
Soph deleted the soph/preserve-local-settings branch January 7, 2026 15:43
alishakawaguchi added a commit that referenced this pull request May 20, 2026
CI lint:
- escape U+200B literals (staticcheck ST1018)

Real bugs (cursor[bot] + Copilot review):
- loop: ctx-cancel mid-cmd.Run() now classifies as OutcomeCancelled
  instead of being counted as a turn failure and tripping OutcomePaused
  after two consecutive cancels (#1)
- loop: save state before returning OutcomePaused so --continue resumes
  from a snapshot that includes the failing turn (#11)
- investigate fix: wrap context.Canceled as SilentError so Ctrl+C during
  the fix session doesn't print a cobra usage banner (#2)
- cmd: redact URL userinfo on the issue-link Source: line in both
  interactive and non-interactive paths (#5)
- issuelink: redact URL userinfo across gh stderr (not just argv) so a
  token in --issue-link cannot leak via the error path (#10)
- cmd: outcome-aware footer — "Investigation ended" + resume hint for
  paused/cancelled, "Investigation complete" + fix hint only for
  Quorum/Stalled (#6)
- cmd: validate maxTurns/quorum bounds after settings/flag merge so a
  hand-edited negative max_turns or oversized quorum errors cleanly
  instead of silently stalling (#7)
- issuelink: tolerate GitHub URL trailing segments (/pull/123/files,
  trailing slash) — the regex now anchors prefix and ignores tail (#13)
- picker: don't print "Saved investigate config" before persistence;
  moved to the caller after SaveLocal succeeds (#14)
- picker: guard pickerFormOverride with atomic.Pointer so parallel
  tests that swap the override don't race (#12)

Docs:
- settings/loop: fix stale "0 → 3" max_turns doc; default is 2 (#8/#9)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: b0135abeee0d
khaong added a commit that referenced this pull request May 24, 2026
Resolves conflict in go.mod: keeps the entireio/auth-go dependency
added by 49dca72 (Integrate auth-go library) while taking the newer
go-git/go-git/v6 and go-git/go-billy/v6 versions from main.

While here, advance the auth-go pin from the pre-release commit
v0.1.1-0.20260520123811-da94c52ef430 to the v0.3.3 release tag. The
intermediate v0.3.x versions deliver three fixes the entire CLI's
split-host (us.auth.entire.io issuer, entire.io data API) deployment
depends on:

  v0.3.1 (auth-go #6): HTTP Basic Auth for the token-exchange grant —
    zitadel-oidc reads client credentials only from Authorization:
    Basic on this grant, not the form body.
  v0.3.2 (auth-go #7): default SubjectTokenType to :access_token —
    zitadel-oidc's STS validator handles :access_token / :refresh_token
    / :id_token but NOT :jwt, so the prior URI was silently rejected
    as "subject_token is invalid".
  v0.3.3 (auth-go #8): default Audience to Resource on the wire —
    zitadel-OIDC-backed servers reject token-exchange requests without
    an explicit `audience` form field with "invalid_target: audience
    is required".

End-to-end verified against us.auth.entire.io: entire login, search,
activity all succeed.
Soph added a commit that referenced this pull request Sep 17, 2026
…ionFile

#5 external.go reimplemented SessionStore.Name's relative branch verbatim —
same IsAbs/VolumeName pairing, same ToSlash(Clean(FromSlash(…))) — without the
comment explaining why the pairing is needed, and it had to know that the store
checks a name only after Name has produced one, which is WriteFile's private
prologue. Name's relative branch is now a named primitive both callers share,
the store exposes ValidateExternalSessionRef (every rule needing no store, plus
whether the ref is filesystem-shaped) and ValidateExternalWriteRef (the
store-backed half), and ValidateWritePath is unexported.

#6 The preflight ran after marshalling and was gated as a whole on RepoPath !=
"". Both current callers set RepoPath, which is what makes that a check that
disappears silently for the next one; the lexical rules need no repo, so only
the store-backed half is conditional now. The remaining asymmetry — an opaque
relative ref is forwarded as given while an absolute one is resolved — is the
protocol's, not this function's, and is left alone deliberately.

#7 ErrOutsideSessionStore said "path is outside the agent's session directory"
for an ID that never resolved anywhere, which names the wrong problem.
Malformed names now report ErrUnsafeSessionName; a path that genuinely left the
store still reports ErrOutsideSessionStore. validateWriteName no longer claims
to "inspect" anything — it touches no filesystem.

#8 The volume-separator check existed in both validators, worded identically,
while the shared reason helper omitted it. It moves in. ValidateSessionID keeps
its separator check ahead of the helper so a Windows absolute path still reports
the separators rather than the colon.

The ResolveSessionFile contract this branch wrote into agent.go had two live
violations: copilotcli's resolveTranscriptRef and cursor's, both passing a raw
payload ID to a resolver that puts it in a directory position. Both now resolve
through SessionStore.SessionFile, and a GitGrepGuard fails the build on the
next one. Two guards in buildAgentStop go: isSubagentAgentStop already returns
false for an unsafe ID via SessionFile, and ExtractModelFromTranscript reads a
path and never touches the ID, so gating it only dropped model attribution.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 01M2RM92E1D4CK1JJ6NDSMTMHC
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants