[Meta] Show projects only to people with access
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- github, typescript
- Lĩnh vực
- authentication, authorization, backend-api-design
Hướng nghiên cứu
Start with the definitions in docs/terms.md and the “The team” section in docs/architecture.md; the issue says these must change first to define Access and Share. Then inspect the listed sub-issues in order and the existing ace share <channel> on|off command, which needs a new name. Done means project access follows the stated rules, the command refers to agent access, and the documentation explains the terms and known security limits.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Today every channel is broadcast across the tailnet, whatever the project. A teammate sees every project with a channel, including private repositories they can't read on GitHub and local folders (for example toddler-game). This adds access control by project.
Rules
- Access to a project means you can see it and its channels, and read and post in them as teammates do today. There is one level. Whether teammates can invoke an agent is still decided per channel by the agent access toggle.
- You have direct access to a project if:
- it's backed by a GitHub repository and your GitHub login can read that repository (so public repositories are open to the whole team), or
- it's a local folder on your own Mac.
- A share gives access to the whole team or to one person, on top of GitHub. It opens the whole project: every person's channels in it, now and later. Forking a channel into a project of your own is how you keep work out of a shared project.
- Only people with direct access can share or unshare a project. Access through a share can't be passed on.
- The confirmation names whose channels the share exposes. For example: "Share starship with Alex? Alex will see every channel in it, including Terkel's and Luke's, and any created later."
- On upgrade, existing projects become private. People with GitHub read access keep seeing repository projects. Local folders disappear for everyone else until someone shares them.
Enforcement (cooperative)
Access holds between hosts running unmodified Ace:
- The host that runs a channel names each caller with
tailscale whois. It refuses people without access, so local channel transcripts, diffs, and repository info never leave it. - Each host shows its owner only projects the owner can access. That covers the directory's listings, lobby subscriptions and events, and hosted channels.
- Shares live in the directory, the team's shared cell. Every host reads them there, because a share has to apply to everyone's channels in the project, not only the sharer's.
Known security hole
This is not a boundary against a teammate who tampers with Ace:
- The directory, lobbies, hosted channels, and compute service accept one team credential derived from
ACE_SECRET, which every host holds. Anyone who copiesACE_SECRETcan:- read every listing: channel names, summaries, and absolute project paths;
- join any project's lobby;
- watch and post in any hosted channel;
- read and rewrite the share list.
- Lobby names for local folders contain the host and path.
- A peer host reports its owner's GitHub login from its own
ghCLI. Nothing verifies it, so the GitHub read-access check trusts what the peer claims. Shares are stored by Tailscale login, whichwhoisverifies. - Hosts on older versions don't enforce access. They keep serving their channels to every peer.
Closing the hole needs per-person credentials that the services verify. That's tracked in the last sub-issue.
Docs
The definition of Team in docs/terms.md and the section "The team" in docs/architecture.md say Ace has no team access controls. Both change first, with new terms Access and Share.
The name clashes with ace share <channel> on|off, which is the per-channel agent access toggle. That command needs a new name, for example ace agents <channel> on|off, so that "share" refers only to project access.
Sub-issues are listed in order.
Dogfooding: #5
- Ngôn ngữ chính
- TypeScript
- Star
- 1
- Fork
- 0
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của githubnext/ace2
-
Ace: adopt desktopToolRules()Đang mởdocumentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
githubnext/ace2#530 · 1 bình luận ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
githubnext/ace2#437 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
githubnext/ace2#529 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
githubnext/ace2#528 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
githubnext/ace2#511 ·
Tất cả issue của githubnext/ace2
Issue tương tự
-
area:editor bug issue-form:bug P0 platform:windows review: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
1lck/Lithe-IDEA#1388 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix(api): isToolAuditEnabled swallows database read errors on auditToolOperations without loggingĐang mởarea: backend bug priority: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
snapotter-hq/SnapOtter#3238 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
rig up --plan times out after 5 s and reports an UNKNOWN outcome while the daemon completes the planĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
filesystem: search_files does not expand non-wildcard excludePatterns like directory_tree doesĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
modelcontextprotocol/servers#5216 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày